- Submit —
POST /api/v1/jobs - Poll —
GET /api/v1/jobs/{run_id}
run_id and poll.
What You Send
input is the insured profile and quote context. offerings is one line item per quoted home, auto, or umbrella option.
Input fields
Lines Nexio must satisfy:
home, auto, umbrella.Two-letter state code for deterministic filtering.
ZIP code for property / garaging context.
Driver profiles.
Year, make, model, garaging ZIP, primary driver.
Incumbent home, auto, and umbrella policy details.
Package-level quote context from your brokerage workflow.
Named insured profile.
Home underwriting context (sq ft, construction, renovation, replacement cost).
Continuous coverage, claims, lapses, non-renewals.
Coverage variants
coverage_types controls required lines:
- Home only —
["home"], home offerings only - Home + auto —
["home", "auto"] - Home + auto + umbrella — adding
umbrellamakes it required
coverage_types are ignored.
Offerings fields
One offering per quoted line item.Stable line-level identifier.
Carrier display name.
home, auto, or umbrella — must match a requested coverage type.Quoted product or form name.
Use
quoted_line for personal-lines offerings.Brokerage quote identifier for this line.
Annual premium for the line.
Annual premium for the parent package.
Converting Quotes to Offerings
If your source system has package quotes, map each line to one offering:Source (input.quotes) | Target (offerings[*]) |
|---|---|
carrier | provider_name |
home / auto / umbrella line object | one offering per line with matching category |
*.quote_id | attributes.quote_id |
*.premium_annual | attributes.line_premium_annual |
package_premium_annual | attributes.package_premium_annual |
package_id | attributes.package_id (passthrough) |
term_months, quote_generated_at, quote_expires_at, broker | attributes.* passthrough |
Keep
coverage_types and offerings[*].category aligned.Quotes vs. offerings vs. solutions
input.quotes— package context your team already hasofferings— line-level inventory Nexio rankssolutions— ranked packages Nexio returns
Submitting a Job
202 Accepted:
run_id immediately.
Polling for Results
PollGET /api/v1/jobs/{run_id} until terminal.
| Status | Meaning | Action |
|---|---|---|
queued | Waiting for worker | Keep polling |
processing | Pipeline running | Keep polling |
completed | Results ready | Consume response |
failed | Error | Read error, stop |
Reading Results
Key fields
| Field | Purpose |
|---|---|
output.solutions_count | Ranked options produced |
output.top_label | Top package label |
output.top_score | Top package score |
solutions[*].rank | Rank order |
solutions[*].cluster_label | recommended, best_value, etc. |
solutions[*].provider_count | 1 = single-carrier, 2+ = mixed |
solutions[*].est_cost_low / est_cost_high | Annual cost range |
solutions[*].scorecard.overall_level | Canonical package score |
solutions[*].offerings[*].provider_name | Carrier per line |
solutions[*].offerings[*].category | home, auto, umbrella |
solutions[*].offerings[*].attributes.line_premium_annual | Line premium |
What NOT to expect
- No
solutions[*].carrier_name— useofferings[*].provider_name - No
solutions[*].score— usescorecard.overall_level - No webhook or realtime metadata
Failure Cases
completed with 0 solutions — output.diagnostic may explain why. Common: coverage_types / offerings[*].category mismatch, missing required lines, or all offerings filtered out. Valid terminal state.
failed — read error and error_details. Terminal.
Stuck in processing — scorecards can take time in the EVALUATE stage. Use backoff.
Example Artifacts
Example Input
Full personal-lines
input object.Example Output
Full completed payload (
output + solutions).example_input.json is the input value only. The submit body wraps it as
{ "input": ..., "offerings": [...] }.Integration Checklist
- Submit body wraps canonical input as
input offeringsgenerated per quoted line, not per packageofferings[*].categoryaligns withinput.coverage_types- Submit returns only
run_id+status - Polling handles all four status values
- Package score read from
scorecard.overall_level - Carrier identity read from
offerings[*].provider_name - Both request and terminal response persisted
Next Steps
- Submit Job — request schema and errors
- Get Job Status — response schema and status values
- Key Concepts — evaluations, offerings, solutions, scorecards
- Authentication — API key types and management

