Engines
An engine is a configured instance of a Nexio pattern. Each engine has anengine_type that determines its behavior:
More engine types are planned. See the Headless Engine Setup guide for creating and configuring engines via API.
Runs
A run is an async job submitted toPOST /api/v1/engines/{engine_slug}/runs. Each run gets a run_id and is
processed through the engine’s pipeline. Poll GET /api/v1/runs/{run_id} for results.
Statuses are queued, processing, completed, degraded, failed, and
cancelled. The last four are terminal: poll until one of them, then stop.
Output phase
A response that carriesoutput or solutions also carries output_phase,
which states which answer they are. It is a first-class field so that no
consumer has to infer the distinction from a status and timestamp combination.
A placement run finishes all of its deterministic scoring before it calls the
model, and it persists that answer at the boundary. The run stamps
completed_deterministic_at at that moment and serves a draft from then on,
while status is still processing. A caller that wants a result sooner than
the model leg allows can render the draft.
A draft is a real answer over part of the decision, not a preview. Its ranks,
cluster labels, and overall_level values are real, but they are computed over
the deterministic scoring dimensions only, with the weights renormalized over
them. The model-scored dimensions are absent from a draft scorecard rather than
empty. They carry real weight, so the final answer can reorder the shortlist.
A failed or cancelled run carries no output, no solutions, and no output_phase, even
when it reached the boundary before it failed. Only the placement engine has a
deterministic boundary today; runs on engines that have none omit both fields
until they reach a terminal status. Webhook payloads never carry either field,
because every webhook event type is terminal.
Full field semantics live on the Get Run Status
page.
Input
input is the subject’s profile and run context. What goes in input depends on your engine’s configuration and domain.
Field names like
coverage_types and premium reflect the current API contract. Your engine’s configuration determines which input fields are relevant. Open the per-engine Contract page on platform.usenexio.com (Copy-for-agents button) to see the exact typed request schema for your engine.Offerings
offerings is the array of provider offerings Nexio evaluates in a placement engine. Each offering represents one provider’s
entry for one requirement category. If you have 3 providers each offering 3 categories, that’s 9 offerings.
Solutions
Nexio assembles offerings into ranked solutions: complete packages that satisfy the stated requirements. Solutions may combine offerings from a single provider or mix providers, whichever combinations score best. Each solution has arank (1 = best) and a cluster_label that categorizes it:
recommended, best_value, best_coverage, or simplest.
Engine Types
The engine you call determines the contract and the pipeline that runs.
Open the per-engine Contract page on
platform.usenexio.com (Copy-for-agents button) when you need the
exact field-level typed schema for a specific engine.
Solutions (detail)
A solution is a ranked package. Each includes:offerings: the selected items in the packageprovider_count: 1 = single provider, 2+ = mixedest_cost_low/est_cost_high: annual cost rangescorecard: multi-dimension evaluationrankandcluster_label
solutions[*].offerings[*].provider_name, not on the solution root.
Ranking strategy
appetite_bucket controls how Nexio weights the scorecard dimensions when ranking solutions.
Set it in input to express the priority:
When omitted, Nexio infers it from submission signals.
The top-ranked solution’s label is returned in
output.top_label and on each solution as
cluster_label. Labels like recommended, best_value, best_coverage, and simplest
reflect where each solution excels: they’re the output side of the ranking strategy.
Scorecards
Six dimensions, each rated L1–L4 (lower is better):coverage_completeness: how completely the solution addresses requirementspricing_competitiveness: cost relative to alternatives and budgetprovider_quality: provider ratings and reputationplacement_likelihood: likelihood of successful acceptanceoperational_simplicity: number of providers, complexity of executionrisk_alignment: fit between provider specialties and the subject’s profile
scorecard.overall_level, a raw weighted level based on
the ranking strategy. Use the emitted solution rank, not the raw weighted
level, as the ordering contract.
A dimension the run could not score is absent from the scorecard, not present
with an empty value, and overall_level is the weighted level over the
dimensions that are present. On a deterministic_draft scorecard every
model-scored dimension is absent for that reason. Which dimensions are
model-scored is set per engine by scoring_dimensions[*].method in the released
engine configuration. Where the configuration also declares an assessed-weight
floor, each scorecard carries assessed_weight_fraction: the share of the
decision weight that scorecard covers.
Dimension names like
coverage_completeness reflect the default engine configuration. Custom engines can define their own scoring dimensions via the Update Config endpoint.The pipeline
Placement
Entity analysis
Returns gaps with severity, recommendations, profile summary, and flags. See the
Get Run Status response schema for full field details.
Output fields you may see
These fields appear onoutput and on individual gap entries depending on engine
configuration. Integrators should treat them as additive: absent on engines that
don’t enable them, present when the engine does.
output.output_phase
The stored output block’s own copy of the top-level output_phase,
carrying the same two values. It is there so a consumer that reads the run’s
output object on its own, rather than the whole response, can still tell a
draft from a final answer. Written on placement-engine output blocks.
output.degradation_reason
Populated on degraded runs (and on placement runs that completed cleanly with
no usable output). One of:
Omitted on healthy completions. Route on this field instead of parsing free-text
from
output.diagnostic or walking warning_details[]. When multiple non-info
diagnostics are present, strict precedence picks the most actionable single
reason: scoring_rule_failed > input_quality > llm_degraded >
enrichment_degraded > other.
data_source_labels (entity analysis)
Per-gap sibling to data_sources[]. Index-aligned broker-readable labels for
each entry in data_sources. data_sources keeps its audit-trail role (raw
input paths); data_source_labels adds a display string per path so broker UIs
can render evidence captions without maintaining their own mapping. Unmatched
paths emit empty strings at the corresponding index: fall back to the raw
path. Omitted when the engine has no data_source_labels map configured.
Rate limits
Rate limits are enforced on the public API.429 Too Many Requests includes a Retry-After header.
Contact support@usenexio.com for higher limits.
Run submission supports an optional Idempotency-Key. Retrying the same submission attaches to
the existing run, while reusing the key for changed execution input returns
409 idempotency_key_reused. Keys are actor- and environment-scoped and live with the run row.