Run a prequalification

Evaluates an applicant against the requested carrier products and returns one prequalify_result entry per product. The v3 request splits the flat v2 body into three envelopes — applicant (demographics, conditions, medications, nicotine), coverage (face amount in integer cents and state), and products (a list of product ids or carrier slugs) — so each surface evolves independently. Money is always integer cents paired with a server-formatted display string, and each entry collapses the v2 premium/other_offers split into a single uniform pricing[] table with one row per rate class.

Ineligible rate classes surface by default as rows with eligibility.eligible: false, a populated rate_class, and generic eligibility.reasons. Pass include_ineligible: false to return only qualifying rows. Pass coverage.quote_options to evaluate several face amounts or monthly budgets in one call; the response stays a flat plans array. Face-amount offers carry death_benefit (period null); monthly-budget offers carry budget (period monthly). Group client-side by the requested dimension — death_benefit.amount.cents for face-amount requests, budget.amount.cents for monthly-budget requests — for side-by-side comparison tables. The response shape never changes with the number of amounts.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

Request body for POST /v3/prequalify. The v3 shape splits the
applicant from the coverage envelope and the product roster:
applicant carries demographics, conditions, medications, and
nicotine; coverage carries the two-letter US state plus
either a single face_amount_cents target or quote_options
matching the Get a quote coverage input;
products lists the carrier products to evaluate — each entry a
canonical product id (prod_<UUID>, family-level) or a carrier
slug (variant-level).
Every request — single face_amount_cents or multi-amount
quote_options — returns a flat plans array. Face-amount
offers carry death_benefit (period null); monthly-budget
offers carry budget (period monthly), so a multi-amount
response groups client-side by the requested dimension without
the shape ever changing. The shape replaces the v2 flat
PrequalifyRequest inheritance the v3 path quietly carried; v2
consumers are unaffected.

applicant
object
required

The applicant envelope for POST /v3/prequalify. Demographic
fields (sex, dob, height_inches, weight_lbs) are
required; conditions, medications, and nicotine are
optional and omitted when the applicant has nothing to
disclose.

coverage
object
required

Coverage envelope for POST /v3/prequalify. Supply exactly one
of face_amount_cents (a single face-amount target in integer
cents) or quote_options (one or more face amounts, or one or
more monthly budgets, evaluated together). quote_options
mirrors the Get a quote coverage input so
a single coverage shape spans both endpoints. The response is
always a flat plans array. Face-amount offers carry
death_benefit (period null); monthly-budget offers carry
budget (period monthly), so a multi-amount response groups
client-side by the requested dimension without the shape ever
changing. Supplying both face_amount_cents and quote_options, or
neither, is a validation_error naming the offending field —
the server enforces the exactly-one rule.

products
array of strings
required
length ≥ 1

Carrier products to evaluate, in caller-preferred
order. Each entry is either a canonical product id
(prod_<UUID> — family-level: expands to every
ZDRM sharing that id) or a specific carrier slug
(variant-level: that one ZDRM). Mix freely.
Unknown ids return a 422 validation error naming
the offending products[N] index.

products*
boolean
Defaults to true

Defaults to true: products and rate-class rows the applicant does not qualify for are returned with eligibility.eligible: false, a populated rate_class, and generic reasons. Pass false to return only qualifying products and rows.

string
enum

Drops any offer whose underwriting rank bucket sits below the supplied floor, so a graded floor returns only graded-or-better offers. The bucket each offer reports is the eligibility.category axis on the row. The guaranteed floor additionally injects the guaranteed-issue applicant profile so only guaranteed-issue offers survive.

Allowed:
string

Restricts evaluation to a single product class, identified by the class key returned on the products row of Get datasets — for example fex, term, medsup, or preneed. Offers outside the class are dropped before pricing.

Headers
uuid
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$

Client-supplied idempotency token for mutating /v3/* requests.

When the service has already completed a request for the same
account, route, key, and identical JSON body within the 24-hour
replay window, it returns the stored HTTP status and body instead
of executing again. Reusing the same key with a different body
returns 409 Conflict.

Unlike /v1 and /v2, the /v3 surface accepts only a UUID v4
value — non-UUID and SHA-256-derived keys are rejected with
validation_error. Mint a fresh UUID v4 per distinct logical
operation and reuse it across retries of that same operation.

string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json