# Members ## List members **get** `/v2/members` Retrieves a paginated list of the members in the authenticated organization's book — identity, contact details, and address. The book covers members reached through an employer in the organization's book as well as members of a group it owns. Supports free-text search (name, email, or exact member id). ### Query Parameters - `limit: optional number` Items per page (default: 20, max: 100) - `page: optional number` Page number (default: 1) - `search: optional string` Case-insensitive search across member name and email; exact match on member id ### Returns - `data: array of { id, first_name, last_name, 3 more }` - `id: string` Unique member identifier with 'mbr_' prefix - `first_name: string` Member's legal first name - `last_name: string` Member's legal last name - `address: optional { address_line_1, city, state, 2 more }` Member's residential address - `address_line_1: string` Primary street address - `city: string` City name - `state: "AL" or "AK" or "AZ" or 59 more` * `AL` - AL * `AK` - AK * `AZ` - AZ * `AR` - AR * `CA` - CA * `CO` - CO * `CT` - CT * `DC` - DC * `DE` - DE * `FL` - FL * `GA` - GA * `HI` - HI * `ID` - ID * `IL` - IL * `IN` - IN * `IA` - IA * `KS` - KS * `KY` - KY * `LA` - LA * `ME` - ME * `MD` - MD * `MA` - MA * `MI` - MI * `MN` - MN * `MS` - MS * `MO` - MO * `MT` - MT * `NE` - NE * `NV` - NV * `NH` - NH * `NJ` - NJ * `NM` - NM * `NY` - NY * `NC` - NC * `ND` - ND * `OH` - OH * `OK` - OK * `OR` - OR * `PA` - PA * `RI` - RI * `SC` - SC * `SD` - SD * `TN` - TN * `TX` - TX * `UT` - UT * `VT` - VT * `VA` - VA * `WA` - WA * `WI` - WI * `WV` - WV * `WY` - WY * `PR` - PR * `GU` - GU * `AS` - AS * `VI` - VI * `MP` - MP * `MH` - MH * `PW` - PW * `FM` - FM * `AE` - AE * `AA` - AA * `AP` - AP - `"AL"` - `"AK"` - `"AZ"` - `"AR"` - `"CA"` - `"CO"` - `"CT"` - `"DC"` - `"DE"` - `"FL"` - `"GA"` - `"HI"` - `"ID"` - `"IL"` - `"IN"` - `"IA"` - `"KS"` - `"KY"` - `"LA"` - `"ME"` - `"MD"` - `"MA"` - `"MI"` - `"MN"` - `"MS"` - `"MO"` - `"MT"` - `"NE"` - `"NV"` - `"NH"` - `"NJ"` - `"NM"` - `"NY"` - `"NC"` - `"ND"` - `"OH"` - `"OK"` - `"OR"` - `"PA"` - `"RI"` - `"SC"` - `"SD"` - `"TN"` - `"TX"` - `"UT"` - `"VT"` - `"VA"` - `"WA"` - `"WI"` - `"WV"` - `"WY"` - `"PR"` - `"GU"` - `"AS"` - `"VI"` - `"MP"` - `"MH"` - `"PW"` - `"FM"` - `"AE"` - `"AA"` - `"AP"` - `zipcode: string` ZIP code (5 or 9 digit) - `address_line_2: optional string` Secondary street address (apt, suite, etc.) - `email: optional string` Email address - `phone: optional string` Phone number (10-digit US domestic string) - `pagination: Pagination` Pagination metadata for list responses. - `limit: number` Items per page - `page: number` Current page number - `total: number` Total number of items - `total_pages: number` Total number of pages ### Example ```http curl https://api.vitablehealth.com/v2/members \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "id": "mbr_abc123def456", "first_name": "Jane", "last_name": "Doe", "email": "jane.doe@example.com", "phone": "4155550100", "address": { "address_line_1": "123 Main Street", "address_line_2": "Apt 4B", "city": "San Francisco", "state": "CA", "zipcode": "94102" } } ], "pagination": { "page": 1, "limit": 20, "total": 1, "total_pages": 1 } } ``` ## Get member **get** `/v1/members/{member_id}` Retrieves a member's profile by ID — identity, demographics, address, contact details, tobacco status, and profile status. Access is scoped to the authenticated principal; a member not visible to the caller returns a 404. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Returns - `data: { id, age, date_of_birth, 14 more }` A member's profile: identity, contact details, address, demographics, and onboarding status. - `id: string` Unique member identifier with 'mbr_' prefix - `age: number` Member's age in years, derived from date of birth - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `first_name: string` Member's legal first name - `last_name: string` Member's legal last name - `name: string` Member's full legal name - `status: "onboarded" or "pending_onboarding"` Member profile status (onboarded or pending onboarding) - `"onboarded"` - `"pending_onboarding"` - `address: optional { address_line_1, city, state, 2 more }` Member's residential address - `address_line_1: string` Primary street address - `city: string` City name - `state: "AL" or "AK" or "AZ" or 59 more` * `AL` - AL * `AK` - AK * `AZ` - AZ * `AR` - AR * `CA` - CA * `CO` - CO * `CT` - CT * `DC` - DC * `DE` - DE * `FL` - FL * `GA` - GA * `HI` - HI * `ID` - ID * `IL` - IL * `IN` - IN * `IA` - IA * `KS` - KS * `KY` - KY * `LA` - LA * `ME` - ME * `MD` - MD * `MA` - MA * `MI` - MI * `MN` - MN * `MS` - MS * `MO` - MO * `MT` - MT * `NE` - NE * `NV` - NV * `NH` - NH * `NJ` - NJ * `NM` - NM * `NY` - NY * `NC` - NC * `ND` - ND * `OH` - OH * `OK` - OK * `OR` - OR * `PA` - PA * `RI` - RI * `SC` - SC * `SD` - SD * `TN` - TN * `TX` - TX * `UT` - UT * `VT` - VT * `VA` - VA * `WA` - WA * `WI` - WI * `WV` - WV * `WY` - WY * `PR` - PR * `GU` - GU * `AS` - AS * `VI` - VI * `MP` - MP * `MH` - MH * `PW` - PW * `FM` - FM * `AE` - AE * `AA` - AA * `AP` - AP - `"AL"` - `"AK"` - `"AZ"` - `"AR"` - `"CA"` - `"CO"` - `"CT"` - `"DC"` - `"DE"` - `"FL"` - `"GA"` - `"HI"` - `"ID"` - `"IL"` - `"IN"` - `"IA"` - `"KS"` - `"KY"` - `"LA"` - `"ME"` - `"MD"` - `"MA"` - `"MI"` - `"MN"` - `"MS"` - `"MO"` - `"MT"` - `"NE"` - `"NV"` - `"NH"` - `"NJ"` - `"NM"` - `"NY"` - `"NC"` - `"ND"` - `"OH"` - `"OK"` - `"OR"` - `"PA"` - `"RI"` - `"SC"` - `"SD"` - `"TN"` - `"TX"` - `"UT"` - `"VT"` - `"VA"` - `"WA"` - `"WI"` - `"WV"` - `"WY"` - `"PR"` - `"GU"` - `"AS"` - `"VI"` - `"MP"` - `"MH"` - `"PW"` - `"FM"` - `"AE"` - `"AA"` - `"AP"` - `zipcode: string` ZIP code (5 or 9 digit) - `address_line_2: optional string` Secondary street address (apt, suite, etc.) - `email: optional string` Email address - `gender: optional "Male" or "Female" or "Transgender" or 2 more` * `Male` - Male * `Female` - Female * `Transgender` - Transgender * `Non-binary` - Non Binary * `Prefer not to respond` - Prefer Not To Respond - `"Male"` - `"Female"` - `"Transgender"` - `"Non-binary"` - `"Prefer not to respond"` - `marital_status: optional "Single" or "Married"` * `Single` - Single * `Married` - Married - `"Single"` - `"Married"` - `middle_name: optional string` Member's legal middle name - `phone: optional string` Phone number (10-digit US domestic string) - `preferred_language: optional "en" or "es" or "zh" or 3 more` * `en` - English * `es` - Spanish * `zh` - Chinese * `ru` - Russian * `sw` - Swahili * `th` - Thai - `"en"` - `"es"` - `"zh"` - `"ru"` - `"sw"` - `"th"` - `sex_at_birth: optional "Male" or "Female" or "Other" or "Unknown"` * `Male` - Male * `Female` - Female * `Other` - Other * `Unknown` - Unknown - `"Male"` - `"Female"` - `"Other"` - `"Unknown"` - `suffix: optional "Sr" or "Jr" or "I" or 4 more` * `Sr` - Sr * `Jr` - Jr * `I` - I * `II` - II * `III` - III * `IV` - IV * `V` - V - `"Sr"` - `"Jr"` - `"I"` - `"II"` - `"III"` - `"IV"` - `"V"` - `tobacco_status: optional boolean` Whether the member uses tobacco, if known ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": { "id": "mbr_abc123def456", "name": "Jane Doe", "first_name": "Jane", "middle_name": null, "last_name": "Doe", "suffix": null, "email": "jane.doe@example.com", "phone": "4155550100", "address": { "address_line_1": "123 Main Street", "address_line_2": "Apt 4B", "city": "San Francisco", "state": "CA", "zipcode": "94102" }, "date_of_birth": "1990-04-12", "age": 36, "sex_at_birth": "Female", "gender": "Female", "preferred_language": "en", "tobacco_status": false, "status": "onboarded" } } ``` ## List member dependents **get** `/v1/members/{member_id}/dependents` Lists a member's active legal dependents — name, relationship, date of birth, age, and sex at birth. Access is scoped to the authenticated principal; a member not visible to the caller returns a 404. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Returns - `data: array of { age, date_of_birth, first_name, 5 more }` - `age: number` Dependent's age in years, derived from date of birth - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `first_name: string` Dependent's first name - `last_name: string` Dependent's last name - `member_id: string` The dependent's own member identifier with 'mbr_' prefix - `primary_member_id: string` The primary member's identifier with 'mbr_' prefix - `relationship: "Spouse" or "Child"` * `Spouse` - Spouse * `Child` - Child - `"Spouse"` - `"Child"` - `sex_at_birth: optional "Male" or "Female" or "Other" or "Unknown"` * `Male` - Male * `Female` - Female * `Other` - Other * `Unknown` - Unknown - `"Male"` - `"Female"` - `"Other"` - `"Unknown"` ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID/dependents \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "name": "Sam Doe", "relationship": "Child", "date_of_birth": "2015-06-01", "age": 11, "sex_at_birth": "Male" } ] } ``` ## List member employments **get** `/v1/members/{member_id}/employments` Lists a member's employment across every employer — the same employee record shape as the employer's employees list, plus the employer name. For an organization caller the rows are scoped to companies in that organization's book; a member (self/household) or Vitable Admin sees all employments. A member not visible to the caller returns a 404. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Returns - `data: array of Employee` - `id: string` Unique employee identifier with 'empl_' prefix - `classification_effective_date: string` Date the employee's current classification took effect - `compensation_type: "Salary" or "Hourly"` * `Salary` - Salary * `Hourly` - Hourly - `"Salary"` - `"Hourly"` - `compensation_type_effective_date: string` Date the employee's current compensation type took effect - `created_at: string` Timestamp when the employee was created - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `deductions: array of { benefit_name, deduction_amount_in_cents, deduction_category, 4 more }` Payroll deductions from the most recent statement period. Replaced when a new statement is generated. - `benefit_name: string` Name of the benefit plan - `deduction_amount_in_cents: number` Employee deduction amount in cents - `deduction_category: string` Deduction category (reserved for future use) - `frequency: "weekly" or "bi_weekly" or "semi_monthly" or "monthly"` * `weekly` - Weekly * `bi_weekly` - Bi Weekly * `semi_monthly` - Semi Monthly * `monthly` - Monthly - `"weekly"` - `"bi_weekly"` - `"semi_monthly"` - `"monthly"` - `period_end_date: string` Period end date (YYYY-MM-DD) - `period_start_date: string` Period start date (YYYY-MM-DD) - `tax_classification: "Unknown" or "Pre-tax" or "Post-tax"` * `Unknown` - Unknown * `Pre-tax` - Pre Tax * `Post-tax` - Post Tax - `"Unknown"` - `"Pre-tax"` - `"Post-tax"` - `email: string` Email address - `employee_class: EmployeeClass` * `Full Time` - Full Time * `Part Time` - Part Time * `Temporary` - Temporary * `Intern` - Intern * `Seasonal` - Seasonal * `Individual Contractor` - Individual Contractor - `"Full Time"` - `"Part Time"` - `"Temporary"` - `"Intern"` - `"Seasonal"` - `"Individual Contractor"` - `employer_id: string` Unique identifier of the employer this employment is with (empr_*) - `first_name: string` Employee's legal first name - `last_name: string` Employee's legal last name - `member_id: string` Unique member identifier with 'mbr_' prefix - `phone: string` Phone number (10-digit US domestic string) - `start_date: string` Employee's start date with the employer - `status: "active" or "terminated"` Employee status (active or terminated) - `"active"` - `"terminated"` - `updated_at: string` Timestamp when the employee was last updated - `address: optional { address_line_1, city, state, 2 more }` Employee's residential address - `address_line_1: string` Primary street address - `city: string` City name - `state: string` Two-letter state code (e.g., CA, NY) - `zipcode: string` ZIP code (5 or 9 digit) - `address_line_2: optional string` Secondary street address (apt, suite, etc.) - `employer_name: optional string` Name of the employer this employment is with - `gender: optional string` Gender identity, if provided - `reference_id: optional string` Partner-assigned reference ID for the employee - `suffix: optional string` Name suffix (e.g., Jr., Sr., III) - `termination_date: optional string` Employee's termination date, if terminated ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID/employments \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "id": "empl_abc123def456", "member_id": "mbr_abc123def456", "employer_name": "Acme Corp", "first_name": "Jane", "last_name": "Doe", "employee_class": "full_time", "status": "active", "start_date": "2024-01-15", "termination_date": null, "compensation_type": "salary" } ] } ``` ## List member enrollments **get** `/v1/members/{member_id}/enrollments` Lists a member's benefit enrollments across every employer — benefit type and product, employer, carrier, plan, tier, employee deduction, employer contribution and total premium, the individual enrollment coverage boundary (`coverage_end`), the separate pre-effective cancellation boundary (`cancelled_date`), and the distinct benefit plan-year boundary (`plan_year_coverage_end`) used to determine whether the plan year itself has ended, whether a qualifying life event would currently be required for reissue under the product/open-enrollment rule, enrollment/open-enrollment window, and two statuses: `election_status` (what the member answered) and `policy_status` (what became of their coverage, null unless they enrolled). Every row includes a stable enrollment ID and the exact employer and benefit plan-year IDs used to fetch that row's plan-year detail. The full list is returned across all states so the client derives active plans (effective and upcoming) and the enrollment history from those per-row statuses. For an organization caller the rows are scoped to companies in that organization's book; a member (self/household) or Vitable Admin sees all enrollments. A member not visible to the caller returns a 404. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Returns - `data: array of { id, benefit_plan_year_id, benefit_type, 21 more }` - `id: string` Opaque, stable enrollment identifier used to target enrollment actions - `benefit_plan_year_id: string` Exact benefit plan-year identifier for this enrollment - `benefit_type: "Medical" or "Dental" or "Vision" or "Hospital"` * `Medical` - Medical * `Dental` - Dental * `Vision` - Vision * `Hospital` - Hospital - `"Medical"` - `"Dental"` - `"Vision"` - `"Hospital"` - `cancelled_date: string` Earliest applicable coverage boundary (YYYY-MM-DD) when coverage was cancelled before its effective start; null unless the enrollment was cancelled - `election_status: "Enrolled" or "Waived" or "Pending" or "Expired"` * `Enrolled` - Enrolled * `Waived` - Waived * `Pending` - Pending * `Expired` - Expired - `"Enrolled"` - `"Waived"` - `"Pending"` - `"Expired"` - `employer_id: string` Exact employer identifier for this enrollment - `employer_name: string` Name of the employer the enrollment is through - `enrollment_window_start: string` Enrollment / open-enrollment window start date (YYYY-MM-DD) - `in_last_month_of_coverage: boolean` True when today falls in the final month of the plan-year coverage window; drives end-of-coverage enrollment actions on the client. - `is_within_enrollment_window: boolean` True when today falls inside the enrollment window this member has to answer in; drives enrollment-action availability on the client. - `plan_year_coverage_end: string` Benefit plan-year coverage end date (YYYY-MM-DD), distinct from this enrollment's coverage_end; null when the plan year is open-ended - `policy_status: "Coverage Upcoming" or "Coverage Effective" or "Coverage Ended" or "Cancelled"` * `Coverage Upcoming` - Coverage Upcoming * `Coverage Effective` - Coverage Effective * `Coverage Ended` - Coverage Ended * `Cancelled` - Cancelled - `"Coverage Upcoming"` - `"Coverage Effective"` - `"Coverage Ended"` - `"Cancelled"` - `product_code: "EBA" or "VPC" or "VPC_CORE" or 12 more` * `EBA` - Eba Mec * `VPC` - Vpc Enhanced * `VPC_CORE` - Vpc Core * `MEC` - Vpc Mec * `MEC2` - Mec2 * `MEC_PLUS` - Mec Plus * `MVP` - Mvp * `MVP2` - Mvp2 * `MVPSL` - Mvpsl * `MVPSL2` - Mvpsl2 * `VD` - Dental * `VV` - Vision * `ICHRA` - Ichra * `ICHRA_PREMIUM_PLUS` - Ichra Premium Plus * `ICHRA_REIMBURSEMENT_ONLY` - Ichra Reimbursement Only - `"EBA"` - `"VPC"` - `"VPC_CORE"` - `"MEC"` - `"MEC2"` - `"MEC_PLUS"` - `"MVP"` - `"MVP2"` - `"MVPSL"` - `"MVPSL2"` - `"VD"` - `"VV"` - `"ICHRA"` - `"ICHRA_PREMIUM_PLUS"` - `"ICHRA_REIMBURSEMENT_ONLY"` - `product_name: string` Display name of the benefit product - `requires_qle_for_reissue: boolean` Whether a qualifying life event would be required to reissue this enrollment under the product and open-enrollment rule at the time this list was read - `carrier_name: optional string` Insurance carrier name; null when no active carrier period is resolvable - `coverage_end: optional string` Coverage window end date (YYYY-MM-DD); null while coverage is open-ended - `coverage_start: optional string` Coverage window start date (YYYY-MM-DD) - `employee_deduction_in_cents: optional number` Employee monthly payroll deduction in cents; null unless the row is an election - `employer_contribution_in_cents: optional number` Employer monthly contribution in cents; null unless the row is an election - `enrollment_window_end: optional string` Enrollment / open-enrollment window end date (YYYY-MM-DD); null when open-ended - `plan_name: optional string` Chosen benefit plan name; null unless the row is an election - `premium_in_cents: optional number` Total monthly plan premium in cents; null unless the row is an election - `tier_name: optional string` Chosen benefit plan tier name (e.g., Employee Only); null unless the row is an election ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID/enrollments \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "id": "enrl_AAAAAAAAAAAAAAAAAAAAAQ", "employer_id": "empr_AAAAAAAAAAAAAAAAAAAAAQ", "benefit_plan_year_id": "plyr_AAAAAAAAAAAAAAAAAAAAAQ", "benefit_type": "Medical", "product_code": "MEC_PLUS", "requires_qle_for_reissue": false, "product_name": "MEC Plus", "employer_name": "Acme Corp", "carrier_name": "Vitable", "plan_name": "MEC Plus Standard", "tier_name": "Employee Only", "employee_deduction_in_cents": 5000, "employer_contribution_in_cents": 25000, "premium_in_cents": 30000, "coverage_start": "2026-04-01", "coverage_end": "2026-08-31", "cancelled_date": null, "plan_year_coverage_end": "2026-12-31", "enrollment_window_start": "2026-03-01", "enrollment_window_end": "2026-03-31", "election_status": "Enrolled", "policy_status": "Coverage Effective", "in_last_month_of_coverage": true, "is_within_enrollment_window": false }, { "id": "enrl_AAAAAAAAAAAAAAAAAAAAAg", "employer_id": "empr_AAAAAAAAAAAAAAAAAAAAAg", "benefit_plan_year_id": "plyr_AAAAAAAAAAAAAAAAAAAAAg", "benefit_type": "Dental", "product_code": "VD", "requires_qle_for_reissue": true, "product_name": "Vitable Dental", "employer_name": "Acme Corp", "carrier_name": "Vitable", "plan_name": null, "tier_name": null, "employee_deduction_in_cents": null, "employer_contribution_in_cents": null, "premium_in_cents": null, "coverage_start": null, "coverage_end": null, "cancelled_date": null, "plan_year_coverage_end": "2026-12-31", "enrollment_window_start": "2026-03-01", "enrollment_window_end": "2026-03-31", "election_status": "Waived", "policy_status": null, "in_last_month_of_coverage": false, "is_within_enrollment_window": false }, { "id": "enrl_AAAAAAAAAAAAAAAAAAAAAw", "benefit_type": "Dental", "product_code": "VD", "requires_qle_for_reissue": true, "product_name": "Vitable Dental", "employer_name": "Acme Corp", "carrier_name": "Vitable", "plan_name": "Vitable Dental Standard", "tier_name": "Employee Only", "employee_deduction_in_cents": 1200, "employer_contribution_in_cents": 800, "premium_in_cents": 2000, "coverage_start": null, "coverage_end": null, "cancelled_date": "2026-03-15", "plan_year_coverage_end": "2026-12-31", "enrollment_window_start": "2026-03-01", "enrollment_window_end": "2026-03-31", "election_status": "Enrolled", "policy_status": "Cancelled", "in_last_month_of_coverage": false, "is_within_enrollment_window": false } ] } ``` ## Get member household **get** `/v1/members/{member_id}/household` Lists a member's household as a per-participant table — the account holder plus each active household member, with name, relationship, member type, date of birth, and household-admin flag. Access is scoped to the authenticated principal; a member not visible to the caller (or with no household) returns a 404. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Returns - `data: array of { date_of_birth, first_name, household_admin_in, 4 more }` - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `first_name: string` Household member's first name - `household_admin_in: boolean` Whether this participant is a household admin (the account holder always is) - `last_name: string` Household member's last name - `member_id: string` Member identifier with 'mbr_' prefix - `member_type: "Account Holder" or "Dependent" or "Inactive"` * `Account Holder` - Account Holder * `Dependent` - Dependent * `Inactive` - Inactive - `"Account Holder"` - `"Dependent"` - `"Inactive"` - `relationship: optional "Child" or "Spouse" or "Roommate" or "Other"` * `Child` - Child * `Spouse` - Spouse * `Roommate` - Roommate * `Other` - Other - `"Child"` - `"Spouse"` - `"Roommate"` - `"Other"` ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID/household \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "member_id": "mbr_abc123def456", "name": "Jane Doe", "relationship": null, "member_type": "Account Holder", "date_of_birth": "1990-04-12", "household_admin_in": true }, { "member_id": "mbr_def456abc789", "name": "John Doe", "relationship": "Spouse", "member_type": "Household Dependent", "date_of_birth": "1989-02-03", "household_admin_in": false } ] } ``` ## List member ID cards **get** `/v1/members/{member_id}/id-cards` Lists a member's benefit ID cards — card type (medical, dental, vision, or rx), employer, plan, provider network, claims payer, carrier contact details, and the disclaimers printed on the card. Medical, dental and vision cards come from the member's active digital benefit cards; the rx card from the member's Ventegra pharmacy benefit (omitted when the member has no free-medication coverage), which carries no plan, network, or carrier details. Access is scoped to the authenticated principal, and an organization caller sees only cards from employers in its book; a member not visible to the caller returns a 404. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Returns - `data: array of { card_type, group_id, group_member_id, 11 more }` - `card_type: "medical" or "dental" or "vision" or "rx"` * `medical` - medical * `dental` - dental * `vision` - vision * `rx` - rx - `"medical"` - `"dental"` - `"vision"` - `"rx"` - `group_id: string` Group number printed on the card (the rx group id for an rx card) - `group_member_id: string` Member id printed on the card (the Ventegra cardholder id for an rx card) - `member_name: string` Name of the member the card is issued to - `nsa_table: array of array of string` No Surprises Act cost-sharing table rendered on the card; empty for an rx card - `benefit_code: optional "EBA" or "VPC" or "VPC_CORE" or 12 more` * `EBA` - Eba Mec * `VPC` - Vpc Enhanced * `VPC_CORE` - Vpc Core * `MEC` - Vpc Mec * `MEC2` - Mec2 * `MEC_PLUS` - Mec Plus * `MVP` - Mvp * `MVP2` - Mvp2 * `MVPSL` - Mvpsl * `MVPSL2` - Mvpsl2 * `VD` - Dental * `VV` - Vision * `ICHRA` - Ichra * `ICHRA_PREMIUM_PLUS` - Ichra Premium Plus * `ICHRA_REIMBURSEMENT_ONLY` - Ichra Reimbursement Only - `"EBA"` - `"VPC"` - `"VPC_CORE"` - `"MEC"` - `"MEC2"` - `"MEC_PLUS"` - `"MVP"` - `"MVP2"` - `"MVPSL"` - `"MVPSL2"` - `"VD"` - `"VV"` - `"ICHRA"` - `"ICHRA_PREMIUM_PLUS"` - `"ICHRA_REIMBURSEMENT_ONLY"` - `carrier_phone: optional string` Carrier phone number on the card; null for an rx card - `carrier_website: optional string` Carrier website on the card; null for an rx card - `claims_payer_display_name: optional string` Claims payer shown on the card - `employer_name: optional string` Employer the card's coverage is through; null for an rx card without group info - `general_disclaimer: optional string` General disclaimer text; null for an rx card - `network: optional { id, address, logo, 8 more }` Provider network shown on the card; null for an rx card - `id: string` - `address: { address_line_1, address_line_2, city, 2 more }` Shared read serializer for a postal address on public API responses. One definition for the address block every public resource emits (employer, employee, …), so the 5-field shape isn't hand-rolled per endpoint. Read-only: it renders an already-built address value object (e.g. `AddressDVO`) whose attributes map 1:1 to these fields. - `address_line_1: string` Primary street address. - `address_line_2: string` Secondary street address (apt, suite, etc.). - `city: string` City name. - `state: string` Two-letter state code (e.g. `CA`, `NY`). - `zipcode: string` ZIP code (5 or 9 digit). - `logo: string` - `member_phone: string` - `name: string` Name of the network - `phone: string` - `provider_phone: string` - `website: string` Website of the network - `edi: optional string` Network's EDI - `member_website: optional string` Website for members - `provider_website: optional string` Website for providers - `plan_disclaimer: optional string` Plan-specific disclaimer text; null for an rx card - `plan_name: optional string` Benefit plan name on the card; null for a consumer-membership rx card ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID/id-cards \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "card_type": "medical", "group_id": "GRP-000123", "group_member_id": "GM-000456", "member_name": "Jane Doe", "employer_name": "Acme Inc.", "plan_name": "MEC Plus Standard", "benefit_code": "MEC_PLUS", "network": { "id": "5f1c1f9e-6d4a-4b21-9f77-2d4c8f0a1b33", "name": "First Health", "logo": "https://assets.vitablehealth.com/networks/first-health.png", "address": { "address_line_1": "123 Main Street", "address_line_2": null, "city": "San Francisco", "state": "CA", "zipcode": "94102" }, "edi": "87726", "website": "https://firsthealth.example.com", "phone": "(800) 555-0100", "member_website": "https://firsthealth.example.com/members", "member_phone": "(800) 555-0101", "provider_website": "https://firsthealth.example.com/providers", "provider_phone": "(800) 555-0102" }, "claims_payer_display_name": "Vitable Health", "carrier_phone": "(800) 555-0100", "carrier_website": "https://vitablehealth.com", "plan_disclaimer": "This plan is not major medical insurance.", "general_disclaimer": "Possession of this card does not guarantee coverage.", "nsa_table": [ [ "Primary care", "$0" ], [ "Specialist", "$40" ] ] }, { "card_type": "rx", "group_id": "TEST125", "group_member_id": "RX-000789", "member_name": "Jane Doe", "employer_name": "Acme Inc.", "plan_name": null, "benefit_code": null, "network": null, "claims_payer_display_name": null, "carrier_phone": null, "carrier_website": null, "plan_disclaimer": null, "general_disclaimer": null, "nsa_table": [] } ] } ``` ## List member qualifying life events **get** `/v1/members/{member_id}/qualifying-life-events` Lists a member's qualifying life events, including events already used for another enrollment. Returns all statuses by default; pass the status query param to filter to one (e.g. approved). Events are ordered newest submission first with stable paging. Custom text is present only when submitted and is otherwise null. A member not visible to the caller returns a 404. API keys and unbound access tokens have organization-wide access. Employer-bound tokens require employment at the bound employer, and employee-bound tokens require the exact employee-member relationship. Organization or scope mismatches return a 404 before pagination is validated. ### Path Parameters - `member_id: string` Unique member identifier (mbr_*) ### Query Parameters - `limit: optional number` Items per page (default: 20, max: 100) - `page: optional number` Page number (default: 1) - `status: optional "approved" or "denied" or "pending"` Optional. Filter to a single QLE status; omit to return all statuses. - `"approved"` - `"denied"` - `"pending"` ### Returns - `data: array of { id, event_type, other_event, 2 more }` - `id: string` Opaque qualifying life event identifier - `event_type: "Married" or "Divorced" or "New child" or 2 more` * `Married` - Married * `Divorced` - Divorced * `New child` - New Child * `Court ordered` - Court Ordered * `Other` - Other - `"Married"` - `"Divorced"` - `"New child"` - `"Court ordered"` - `"Other"` - `other_event: string` Custom event description when event_type is Other; otherwise normally null - `status: "pending" or "approved" or "denied"` * `pending` - Pending * `approved` - Approved * `denied` - Denied - `"pending"` - `"approved"` - `"denied"` - `submitted_at: string` When the member submitted the event - `pagination: Pagination` Pagination metadata for list responses. - `limit: number` Items per page - `page: number` Current page number - `total: number` Total number of items - `total_pages: number` Total number of pages ### Example ```http curl https://api.vitablehealth.com/v1/members/$MEMBER_ID/qualifying-life-events \ -H "Authorization: Bearer $VITABLE_CONNECT_API_KEY" ``` #### Response ```json { "data": [ { "id": "qle_AAAAAAAAAAAAAAAAAAAAAQ", "event_type": "Other", "other_event": "Relocation", "status": "approved", "submitted_at": "2026-07-01T14:30:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 1, "total_pages": 1 } } ``` ## Domain Types ### Member List Response - `MemberListResponse { id, first_name, last_name, 3 more }` A member in the organization's directory: identity, contact details, address, and join date. - `id: string` Unique member identifier with 'mbr_' prefix - `first_name: string` Member's legal first name - `last_name: string` Member's legal last name - `address: optional { address_line_1, city, state, 2 more }` Member's residential address - `address_line_1: string` Primary street address - `city: string` City name - `state: "AL" or "AK" or "AZ" or 59 more` * `AL` - AL * `AK` - AK * `AZ` - AZ * `AR` - AR * `CA` - CA * `CO` - CO * `CT` - CT * `DC` - DC * `DE` - DE * `FL` - FL * `GA` - GA * `HI` - HI * `ID` - ID * `IL` - IL * `IN` - IN * `IA` - IA * `KS` - KS * `KY` - KY * `LA` - LA * `ME` - ME * `MD` - MD * `MA` - MA * `MI` - MI * `MN` - MN * `MS` - MS * `MO` - MO * `MT` - MT * `NE` - NE * `NV` - NV * `NH` - NH * `NJ` - NJ * `NM` - NM * `NY` - NY * `NC` - NC * `ND` - ND * `OH` - OH * `OK` - OK * `OR` - OR * `PA` - PA * `RI` - RI * `SC` - SC * `SD` - SD * `TN` - TN * `TX` - TX * `UT` - UT * `VT` - VT * `VA` - VA * `WA` - WA * `WI` - WI * `WV` - WV * `WY` - WY * `PR` - PR * `GU` - GU * `AS` - AS * `VI` - VI * `MP` - MP * `MH` - MH * `PW` - PW * `FM` - FM * `AE` - AE * `AA` - AA * `AP` - AP - `"AL"` - `"AK"` - `"AZ"` - `"AR"` - `"CA"` - `"CO"` - `"CT"` - `"DC"` - `"DE"` - `"FL"` - `"GA"` - `"HI"` - `"ID"` - `"IL"` - `"IN"` - `"IA"` - `"KS"` - `"KY"` - `"LA"` - `"ME"` - `"MD"` - `"MA"` - `"MI"` - `"MN"` - `"MS"` - `"MO"` - `"MT"` - `"NE"` - `"NV"` - `"NH"` - `"NJ"` - `"NM"` - `"NY"` - `"NC"` - `"ND"` - `"OH"` - `"OK"` - `"OR"` - `"PA"` - `"RI"` - `"SC"` - `"SD"` - `"TN"` - `"TX"` - `"UT"` - `"VT"` - `"VA"` - `"WA"` - `"WI"` - `"WV"` - `"WY"` - `"PR"` - `"GU"` - `"AS"` - `"VI"` - `"MP"` - `"MH"` - `"PW"` - `"FM"` - `"AE"` - `"AA"` - `"AP"` - `zipcode: string` ZIP code (5 or 9 digit) - `address_line_2: optional string` Secondary street address (apt, suite, etc.) - `email: optional string` Email address - `phone: optional string` Phone number (10-digit US domestic string) ### Member Retrieve Response - `MemberRetrieveResponse { data }` Response containing a single member resource. - `data: { id, age, date_of_birth, 14 more }` A member's profile: identity, contact details, address, demographics, and onboarding status. - `id: string` Unique member identifier with 'mbr_' prefix - `age: number` Member's age in years, derived from date of birth - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `first_name: string` Member's legal first name - `last_name: string` Member's legal last name - `name: string` Member's full legal name - `status: "onboarded" or "pending_onboarding"` Member profile status (onboarded or pending onboarding) - `"onboarded"` - `"pending_onboarding"` - `address: optional { address_line_1, city, state, 2 more }` Member's residential address - `address_line_1: string` Primary street address - `city: string` City name - `state: "AL" or "AK" or "AZ" or 59 more` * `AL` - AL * `AK` - AK * `AZ` - AZ * `AR` - AR * `CA` - CA * `CO` - CO * `CT` - CT * `DC` - DC * `DE` - DE * `FL` - FL * `GA` - GA * `HI` - HI * `ID` - ID * `IL` - IL * `IN` - IN * `IA` - IA * `KS` - KS * `KY` - KY * `LA` - LA * `ME` - ME * `MD` - MD * `MA` - MA * `MI` - MI * `MN` - MN * `MS` - MS * `MO` - MO * `MT` - MT * `NE` - NE * `NV` - NV * `NH` - NH * `NJ` - NJ * `NM` - NM * `NY` - NY * `NC` - NC * `ND` - ND * `OH` - OH * `OK` - OK * `OR` - OR * `PA` - PA * `RI` - RI * `SC` - SC * `SD` - SD * `TN` - TN * `TX` - TX * `UT` - UT * `VT` - VT * `VA` - VA * `WA` - WA * `WI` - WI * `WV` - WV * `WY` - WY * `PR` - PR * `GU` - GU * `AS` - AS * `VI` - VI * `MP` - MP * `MH` - MH * `PW` - PW * `FM` - FM * `AE` - AE * `AA` - AA * `AP` - AP - `"AL"` - `"AK"` - `"AZ"` - `"AR"` - `"CA"` - `"CO"` - `"CT"` - `"DC"` - `"DE"` - `"FL"` - `"GA"` - `"HI"` - `"ID"` - `"IL"` - `"IN"` - `"IA"` - `"KS"` - `"KY"` - `"LA"` - `"ME"` - `"MD"` - `"MA"` - `"MI"` - `"MN"` - `"MS"` - `"MO"` - `"MT"` - `"NE"` - `"NV"` - `"NH"` - `"NJ"` - `"NM"` - `"NY"` - `"NC"` - `"ND"` - `"OH"` - `"OK"` - `"OR"` - `"PA"` - `"RI"` - `"SC"` - `"SD"` - `"TN"` - `"TX"` - `"UT"` - `"VT"` - `"VA"` - `"WA"` - `"WI"` - `"WV"` - `"WY"` - `"PR"` - `"GU"` - `"AS"` - `"VI"` - `"MP"` - `"MH"` - `"PW"` - `"FM"` - `"AE"` - `"AA"` - `"AP"` - `zipcode: string` ZIP code (5 or 9 digit) - `address_line_2: optional string` Secondary street address (apt, suite, etc.) - `email: optional string` Email address - `gender: optional "Male" or "Female" or "Transgender" or 2 more` * `Male` - Male * `Female` - Female * `Transgender` - Transgender * `Non-binary` - Non Binary * `Prefer not to respond` - Prefer Not To Respond - `"Male"` - `"Female"` - `"Transgender"` - `"Non-binary"` - `"Prefer not to respond"` - `marital_status: optional "Single" or "Married"` * `Single` - Single * `Married` - Married - `"Single"` - `"Married"` - `middle_name: optional string` Member's legal middle name - `phone: optional string` Phone number (10-digit US domestic string) - `preferred_language: optional "en" or "es" or "zh" or 3 more` * `en` - English * `es` - Spanish * `zh` - Chinese * `ru` - Russian * `sw` - Swahili * `th` - Thai - `"en"` - `"es"` - `"zh"` - `"ru"` - `"sw"` - `"th"` - `sex_at_birth: optional "Male" or "Female" or "Other" or "Unknown"` * `Male` - Male * `Female` - Female * `Other` - Other * `Unknown` - Unknown - `"Male"` - `"Female"` - `"Other"` - `"Unknown"` - `suffix: optional "Sr" or "Jr" or "I" or 4 more` * `Sr` - Sr * `Jr` - Jr * `I` - I * `II` - II * `III` - III * `IV` - IV * `V` - V - `"Sr"` - `"Jr"` - `"I"` - `"II"` - `"III"` - `"IV"` - `"V"` - `tobacco_status: optional boolean` Whether the member uses tobacco, if known ### Member List Dependents Response - `MemberListDependentsResponse { data }` Unpaginated `{"data": [...]}` list of member dependents. - `data: array of { age, date_of_birth, first_name, 5 more }` - `age: number` Dependent's age in years, derived from date of birth - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `first_name: string` Dependent's first name - `last_name: string` Dependent's last name - `member_id: string` The dependent's own member identifier with 'mbr_' prefix - `primary_member_id: string` The primary member's identifier with 'mbr_' prefix - `relationship: "Spouse" or "Child"` * `Spouse` - Spouse * `Child` - Child - `"Spouse"` - `"Child"` - `sex_at_birth: optional "Male" or "Female" or "Other" or "Unknown"` * `Male` - Male * `Female` - Female * `Other` - Other * `Unknown` - Unknown - `"Male"` - `"Female"` - `"Other"` - `"Unknown"` ### Member List Employments Response - `MemberListEmploymentsResponse { data }` Unpaginated `{"data": [...]}` list of member employments. - `data: array of Employee` - `id: string` Unique employee identifier with 'empl_' prefix - `classification_effective_date: string` Date the employee's current classification took effect - `compensation_type: "Salary" or "Hourly"` * `Salary` - Salary * `Hourly` - Hourly - `"Salary"` - `"Hourly"` - `compensation_type_effective_date: string` Date the employee's current compensation type took effect - `created_at: string` Timestamp when the employee was created - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `deductions: array of { benefit_name, deduction_amount_in_cents, deduction_category, 4 more }` Payroll deductions from the most recent statement period. Replaced when a new statement is generated. - `benefit_name: string` Name of the benefit plan - `deduction_amount_in_cents: number` Employee deduction amount in cents - `deduction_category: string` Deduction category (reserved for future use) - `frequency: "weekly" or "bi_weekly" or "semi_monthly" or "monthly"` * `weekly` - Weekly * `bi_weekly` - Bi Weekly * `semi_monthly` - Semi Monthly * `monthly` - Monthly - `"weekly"` - `"bi_weekly"` - `"semi_monthly"` - `"monthly"` - `period_end_date: string` Period end date (YYYY-MM-DD) - `period_start_date: string` Period start date (YYYY-MM-DD) - `tax_classification: "Unknown" or "Pre-tax" or "Post-tax"` * `Unknown` - Unknown * `Pre-tax` - Pre Tax * `Post-tax` - Post Tax - `"Unknown"` - `"Pre-tax"` - `"Post-tax"` - `email: string` Email address - `employee_class: EmployeeClass` * `Full Time` - Full Time * `Part Time` - Part Time * `Temporary` - Temporary * `Intern` - Intern * `Seasonal` - Seasonal * `Individual Contractor` - Individual Contractor - `"Full Time"` - `"Part Time"` - `"Temporary"` - `"Intern"` - `"Seasonal"` - `"Individual Contractor"` - `employer_id: string` Unique identifier of the employer this employment is with (empr_*) - `first_name: string` Employee's legal first name - `last_name: string` Employee's legal last name - `member_id: string` Unique member identifier with 'mbr_' prefix - `phone: string` Phone number (10-digit US domestic string) - `start_date: string` Employee's start date with the employer - `status: "active" or "terminated"` Employee status (active or terminated) - `"active"` - `"terminated"` - `updated_at: string` Timestamp when the employee was last updated - `address: optional { address_line_1, city, state, 2 more }` Employee's residential address - `address_line_1: string` Primary street address - `city: string` City name - `state: string` Two-letter state code (e.g., CA, NY) - `zipcode: string` ZIP code (5 or 9 digit) - `address_line_2: optional string` Secondary street address (apt, suite, etc.) - `employer_name: optional string` Name of the employer this employment is with - `gender: optional string` Gender identity, if provided - `reference_id: optional string` Partner-assigned reference ID for the employee - `suffix: optional string` Name suffix (e.g., Jr., Sr., III) - `termination_date: optional string` Employee's termination date, if terminated ### Member List Enrollments Response - `MemberListEnrollmentsResponse { data }` Unpaginated `{"data": [...]}` list of member enrollments. - `data: array of { id, benefit_plan_year_id, benefit_type, 21 more }` - `id: string` Opaque, stable enrollment identifier used to target enrollment actions - `benefit_plan_year_id: string` Exact benefit plan-year identifier for this enrollment - `benefit_type: "Medical" or "Dental" or "Vision" or "Hospital"` * `Medical` - Medical * `Dental` - Dental * `Vision` - Vision * `Hospital` - Hospital - `"Medical"` - `"Dental"` - `"Vision"` - `"Hospital"` - `cancelled_date: string` Earliest applicable coverage boundary (YYYY-MM-DD) when coverage was cancelled before its effective start; null unless the enrollment was cancelled - `election_status: "Enrolled" or "Waived" or "Pending" or "Expired"` * `Enrolled` - Enrolled * `Waived` - Waived * `Pending` - Pending * `Expired` - Expired - `"Enrolled"` - `"Waived"` - `"Pending"` - `"Expired"` - `employer_id: string` Exact employer identifier for this enrollment - `employer_name: string` Name of the employer the enrollment is through - `enrollment_window_start: string` Enrollment / open-enrollment window start date (YYYY-MM-DD) - `in_last_month_of_coverage: boolean` True when today falls in the final month of the plan-year coverage window; drives end-of-coverage enrollment actions on the client. - `is_within_enrollment_window: boolean` True when today falls inside the enrollment window this member has to answer in; drives enrollment-action availability on the client. - `plan_year_coverage_end: string` Benefit plan-year coverage end date (YYYY-MM-DD), distinct from this enrollment's coverage_end; null when the plan year is open-ended - `policy_status: "Coverage Upcoming" or "Coverage Effective" or "Coverage Ended" or "Cancelled"` * `Coverage Upcoming` - Coverage Upcoming * `Coverage Effective` - Coverage Effective * `Coverage Ended` - Coverage Ended * `Cancelled` - Cancelled - `"Coverage Upcoming"` - `"Coverage Effective"` - `"Coverage Ended"` - `"Cancelled"` - `product_code: "EBA" or "VPC" or "VPC_CORE" or 12 more` * `EBA` - Eba Mec * `VPC` - Vpc Enhanced * `VPC_CORE` - Vpc Core * `MEC` - Vpc Mec * `MEC2` - Mec2 * `MEC_PLUS` - Mec Plus * `MVP` - Mvp * `MVP2` - Mvp2 * `MVPSL` - Mvpsl * `MVPSL2` - Mvpsl2 * `VD` - Dental * `VV` - Vision * `ICHRA` - Ichra * `ICHRA_PREMIUM_PLUS` - Ichra Premium Plus * `ICHRA_REIMBURSEMENT_ONLY` - Ichra Reimbursement Only - `"EBA"` - `"VPC"` - `"VPC_CORE"` - `"MEC"` - `"MEC2"` - `"MEC_PLUS"` - `"MVP"` - `"MVP2"` - `"MVPSL"` - `"MVPSL2"` - `"VD"` - `"VV"` - `"ICHRA"` - `"ICHRA_PREMIUM_PLUS"` - `"ICHRA_REIMBURSEMENT_ONLY"` - `product_name: string` Display name of the benefit product - `requires_qle_for_reissue: boolean` Whether a qualifying life event would be required to reissue this enrollment under the product and open-enrollment rule at the time this list was read - `carrier_name: optional string` Insurance carrier name; null when no active carrier period is resolvable - `coverage_end: optional string` Coverage window end date (YYYY-MM-DD); null while coverage is open-ended - `coverage_start: optional string` Coverage window start date (YYYY-MM-DD) - `employee_deduction_in_cents: optional number` Employee monthly payroll deduction in cents; null unless the row is an election - `employer_contribution_in_cents: optional number` Employer monthly contribution in cents; null unless the row is an election - `enrollment_window_end: optional string` Enrollment / open-enrollment window end date (YYYY-MM-DD); null when open-ended - `plan_name: optional string` Chosen benefit plan name; null unless the row is an election - `premium_in_cents: optional number` Total monthly plan premium in cents; null unless the row is an election - `tier_name: optional string` Chosen benefit plan tier name (e.g., Employee Only); null unless the row is an election ### Member Retrieve Household Response - `MemberRetrieveHouseholdResponse { data }` Unpaginated `{"data": [...]}` list of the members of a member's household. - `data: array of { date_of_birth, first_name, household_admin_in, 4 more }` - `date_of_birth: string` Date of birth (YYYY-MM-DD) - `first_name: string` Household member's first name - `household_admin_in: boolean` Whether this participant is a household admin (the account holder always is) - `last_name: string` Household member's last name - `member_id: string` Member identifier with 'mbr_' prefix - `member_type: "Account Holder" or "Dependent" or "Inactive"` * `Account Holder` - Account Holder * `Dependent` - Dependent * `Inactive` - Inactive - `"Account Holder"` - `"Dependent"` - `"Inactive"` - `relationship: optional "Child" or "Spouse" or "Roommate" or "Other"` * `Child` - Child * `Spouse` - Spouse * `Roommate` - Roommate * `Other` - Other - `"Child"` - `"Spouse"` - `"Roommate"` - `"Other"` ### Member List ID Cards Response - `MemberListIDCardsResponse { data }` Unpaginated `{"data": [...]}` list of member digital benefit cards. - `data: array of { card_type, group_id, group_member_id, 11 more }` - `card_type: "medical" or "dental" or "vision" or "rx"` * `medical` - medical * `dental` - dental * `vision` - vision * `rx` - rx - `"medical"` - `"dental"` - `"vision"` - `"rx"` - `group_id: string` Group number printed on the card (the rx group id for an rx card) - `group_member_id: string` Member id printed on the card (the Ventegra cardholder id for an rx card) - `member_name: string` Name of the member the card is issued to - `nsa_table: array of array of string` No Surprises Act cost-sharing table rendered on the card; empty for an rx card - `benefit_code: optional "EBA" or "VPC" or "VPC_CORE" or 12 more` * `EBA` - Eba Mec * `VPC` - Vpc Enhanced * `VPC_CORE` - Vpc Core * `MEC` - Vpc Mec * `MEC2` - Mec2 * `MEC_PLUS` - Mec Plus * `MVP` - Mvp * `MVP2` - Mvp2 * `MVPSL` - Mvpsl * `MVPSL2` - Mvpsl2 * `VD` - Dental * `VV` - Vision * `ICHRA` - Ichra * `ICHRA_PREMIUM_PLUS` - Ichra Premium Plus * `ICHRA_REIMBURSEMENT_ONLY` - Ichra Reimbursement Only - `"EBA"` - `"VPC"` - `"VPC_CORE"` - `"MEC"` - `"MEC2"` - `"MEC_PLUS"` - `"MVP"` - `"MVP2"` - `"MVPSL"` - `"MVPSL2"` - `"VD"` - `"VV"` - `"ICHRA"` - `"ICHRA_PREMIUM_PLUS"` - `"ICHRA_REIMBURSEMENT_ONLY"` - `carrier_phone: optional string` Carrier phone number on the card; null for an rx card - `carrier_website: optional string` Carrier website on the card; null for an rx card - `claims_payer_display_name: optional string` Claims payer shown on the card - `employer_name: optional string` Employer the card's coverage is through; null for an rx card without group info - `general_disclaimer: optional string` General disclaimer text; null for an rx card - `network: optional { id, address, logo, 8 more }` Provider network shown on the card; null for an rx card - `id: string` - `address: { address_line_1, address_line_2, city, 2 more }` Shared read serializer for a postal address on public API responses. One definition for the address block every public resource emits (employer, employee, …), so the 5-field shape isn't hand-rolled per endpoint. Read-only: it renders an already-built address value object (e.g. `AddressDVO`) whose attributes map 1:1 to these fields. - `address_line_1: string` Primary street address. - `address_line_2: string` Secondary street address (apt, suite, etc.). - `city: string` City name. - `state: string` Two-letter state code (e.g. `CA`, `NY`). - `zipcode: string` ZIP code (5 or 9 digit). - `logo: string` - `member_phone: string` - `name: string` Name of the network - `phone: string` - `provider_phone: string` - `website: string` Website of the network - `edi: optional string` Network's EDI - `member_website: optional string` Website for members - `provider_website: optional string` Website for providers - `plan_disclaimer: optional string` Plan-specific disclaimer text; null for an rx card - `plan_name: optional string` Benefit plan name on the card; null for a consumer-membership rx card ### Member List Qualifying Life Events Response - `MemberListQualifyingLifeEventsResponse { id, event_type, other_event, 2 more }` - `id: string` Opaque qualifying life event identifier - `event_type: "Married" or "Divorced" or "New child" or 2 more` * `Married` - Married * `Divorced` - Divorced * `New child` - New Child * `Court ordered` - Court Ordered * `Other` - Other - `"Married"` - `"Divorced"` - `"New child"` - `"Court ordered"` - `"Other"` - `other_event: string` Custom event description when event_type is Other; otherwise normally null - `status: "pending" or "approved" or "denied"` * `pending` - Pending * `approved` - Approved * `denied` - Denied - `"pending"` - `"approved"` - `"denied"` - `submitted_at: string` When the member submitted the event