Skip to main content
The census is the input to everything: quotes are rated from it, enrollments materialize it into the live plan, and ongoing syncs keep it true. It starts with your employee roster and may include the dependent elections your platform already has.
Send dependent elections when you have them. Submitted dependents drive covered lives and household tiers. If they are not available yet, Prescience uses a stable normalized small-group household mix and discloses that assumption in the preliminary quote. Final dependent eligibility is confirmed during onboarding.
PUT /groups/{groupId}/census replaces the whole census. Members are matched by externalId (your payroll’s employee ID) when present, otherwise by email, and matched members keep their memberId. An email that belongs to a member with a different externalId is a different person, so a new hire who reuses a former employee’s email never takes over their record. Re-pushing the same roster is safe and idempotent. Before enrollment, members you omit, or whose row is rejected, are removed from the census. After enrollment, leaving a member out never terminates them; send PATCH /members/{memberId} with status: "terminated" instead (see census sync). A census change that affects rating (ages, ZIPs, sex, households or waivers) starts a new market comparison. While it runs, POST /quotes returns 409 rates_pending. An unchanged census keeps its current price.

Member schema

Brokers: every employee and every dependent needs a dob. A member sent with only an age is rejected with an error naming its row (index), because small-group rates are age-rated from the date of birth. Limits: up to 10,000 employees per census and up to 6 dependents per employee.

Quoting vs enrollment requirements

Per member: zip + one of dob | age. That’s it.This is deliberate: you can generate a quote from the minimal data every HR system has, before asking anyone for names or emails. Dependent dobs sharpen the rating (a spouse without one is placed within five years of the employee’s age; a child without one gets a stable age under 18), but they’re optional. The market comparison quotes these exact households, so the price covers the dependents you send.

Per-row errors: bad rows never block good ones

A census write is row-by-row. Valid rows are stored; invalid rows are rejected and reported with their index. A 142-row upload with one bad ZIP stores 141 members:
  • errors: rows that were rejected. Before enrollment, a rejected row’s member is not in the stored census. Fix and re-PUT the whole roster; matching makes re-sending the clean rows harmless.
  • warnings: non-blocking issues, today chiefly members missing email. They quote fine but will fail enrollment.
Treat accepted < received as a sync alert in your integration, not a hard failure. The group can still be quoted with the accepted members.

Reading the census back

GET /groups/{groupId}/census returns what’s stored, each member with a server-assigned memberId:
Keep memberId mapped to your employee record; it’s the handle for single-member updates (PATCH /members/{memberId}) in census sync.
Census intake is enrollment and eligibility data. Before live mode, a BAA and data processing agreement are executed covering exactly this data. See Compliance.