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
- To quote
- To enroll
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-PUTthe whole roster; matching makes re-sending the clean rows harmless.warnings: non-blocking issues, today chiefly members missingemail. They quote fine but will fail enrollment.
Reading the census back
GET /groups/{groupId}/census returns what’s stored, each member with a server-assigned memberId:
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.