id, type, webhook_version, created_at, and data.run. This page shows when each event fires and a full full-mode body for each. Registration, headers, signatures, and retries are on Webhooks. The schema is WebhookEvent in the OpenAPI document.
Rules that hold for every event:
data.runis built from the stored run with the same status fieldsGET /api/v1/runs/{run_id}returns, but it is not the same response. It never carriesoutput_phase,completed_deterministic_at,warnings,work_items,input,computed_at_head,served_headorstale; those come only fromGET.outputis the stored output: it is not trimmed to the operator summary asGETtrims amatchingrun’s output, and no seat’s field policy is applied to it. Read the run withGETwhen you need what a person would see. Its fields are defined on Runs.outputandsolutionsappear only on completed and degraded runs.solutionsappears only for engines that produce ranked solutions.outputhas the shape of the engine’s own output contract.- The event
idis a UUID derived from the event type and the run ID, so a retried or resent delivery carries the sameid. In one delivery setup, arun.supersededidis derived from the correction instead; see run.superseded. - In
thinmode,data.runcarries onlyrun_id,status,environment,attempt,created_at,completed_at, anderror. See Payload modes.
entity_analysis engine). The run.completed, run.failed and run.superseded examples are sandbox runs with a forced test_scenario (see Sandbox fixtures), so environment is test. Your engine’s output has its own shape, and stage is a progress hint whose values differ by engine.
run.completed
Fires once, when the run reachescompleted or degraded. There is no separate degraded event. A degraded run finished and returned an output that is incomplete or of reduced quality. What makes a run degraded depends on the engine type; see Runs. For example, an entity_analysis run whose enrichment source (such as FEMA flood data) timed out stays completed, with the gap recorded in the output’s diagnostics. Check data.run.status and the output’s diagnostics before you treat a result as clean.
status and in the output the engine returned. This example is the fixture engine’s forced degraded result ("test_scenario": "degraded"). Its output carries only an enrichment timeout, which in a live entity_analysis run would leave the run completed.
warnings array. If the engine’s saved configuration turns on expose_warnings (off by default), read the run with GET /api/v1/runs/{run_id} to get it. The setting is read on each request (see Configuration).
run.failed
Fires once, when the run reachesfailed. There is no output. error is a readable message and error_details is structured detail. attempt is the attempt on which the run failed; a value above 1 means Nexio retried the run before it gave up. The example is the fixture engine’s forced failed result ("test_scenario": "failed"); a live failure carries the engine’s own error and error_details.
run.cancelled
Fires once, when the run reachescancelled. A run is cancelled when someone asks for it with POST /api/v1/runs/{run_id}/cancel. A queued run is cancelled at once; a running run stops at its next safe point. There is no output. See Runs for cancellation.
run.superseded
Fires when Nexio attaches a corrected result to a run. Nexio keeps the original result. Corrections are made by Nexio; there is no public route to create one. See Defensibility. Two conditions must both hold:- The engine’s configuration sets
notify_on_supersede: true. It isfalseby default. Which configuration Nexio reads depends on your organization’s delivery setup (see the table below and Configuration). - The endpoint lists
run.supersededinevents.
In both setups
GET /api/v1/runs/{run_id} keeps returning the original output, and a thin endpoint receives no output. In the per-correction setup the corrected output reaches you only in a full run.superseded delivery. In the per-run setup the delivery tells you that a correction exists but does not carry it.
The example is a full body in the per-correction setup, correcting the run.completed example above.
run.superseded delivery can reach you before the run.completed for the same run. Key your stored result on run_id. In the per-correction setup, let the corrected output win over the original, whatever order they arrive in.
Events that do not exist
- There is no
run.degradedevent. Degraded runs arrive asrun.completed. - There are no events for runs that are queued or processing. Poll the run for progress.
- Platform event types such as
dataset.refreshedare not webhook events and cannot be listed in an endpoint’sevents. Nexio can deliver them to your endpoint through an automation; see Platform event deliveries.
Webhooks
Register, verify, retry, resend.
Runs
Every field of the run object.