Evaluates an event against a scenario and returns the outcome with its reasoning.

Request

string
required
The scenario that will evaluate it. Its live version is used.
string
required
The table name in your data model — trigger_object is validated against that schema.
object
required
The event itself. object_id and updated_at are required.
boolean
default:"false"
When on, each rule’s result and score is included in the response.
boolean
default:"false"
When on, the decision is also published as a decision.created webhook.

Response

Outcomes

Unknown is not an error: it means the scenario took no interest in this event. Handle it explicitly in your code — folding it into Approve means that the day your trigger condition narrows, all your traffic gets silently approved.

Rule results

An outcome of hit means the rule fired and contributed its score; no_hit means it was evaluated and did not fire. Including the rules that did not fire is deliberate — it is usually where the answer to “why does this rule never do anything” lives.

Latency

execution_time_ms is the time that decision spent in the engine; it excludes network time. Tens of milliseconds in a typical scenario, driven mostly by rule count and the width of your velocity windows.

Where the time went

One total says a decision was slow without saying which part of it was — and those parts slow down for unrelated reasons: the rules got more expensive, an aggregate is scanning more rows than it used to, the database is under load, or the broker is slow to acknowledge. A call asking for with_rule_execution_details also gets stage_timings: each stage, how many times it ran, and how long it took in total.
Repeated stages are aggregated rather than listed, because that is where the sentence worth reading is: “18 queries, 240 ms” explains a slow decision, where eighteen four-millisecond rows are the same fact spelled out in a way nobody adds up.
The stages do not sum to execution_time_ms. They nest and overlap, and an unmeasured gap is work nobody has named a stage yet rather than idle time. Do not turn this into a pie chart.
This is the answer for an integrator asking about one slow payment from yesterday, holding a correlation id and nothing else — no percentile dashboard can be asked about a single transaction.