Skip to main content

Request a decision

POST 

/v1/projects/:project_id/deciders/:decider_id/decisions

Evaluates the decider against state and records the decision. The questions come from the decider, never from the request, so a call site can only supply what is judged.

Everything that can refuse the request is checked before the decision is written, so a refusal is a 4xx and never a polled failure: the agent's tool surface (400 DECIDER_AGENT_NOT_TOOL_LESS), a tool that cannot answer (400 DECIDER_TOOL_NOT_CALLABLE), a paused project (409 PROJECT_PAUSED) and, for an agent, quota admission (429 QUOTA_EXCEEDED).

A tool backend is called with { state, questions } and must answer { answers: { <question id>: { choice | score | value, probabilities? } } }; an answer outside that contract fails the decision with DECISION_ANSWER_INVALID.

With wait: false, the default, the answer is 201 with the decision queued; poll GET /v1/projects/{project_id}/decisions/{decision_id} or subscribe to decisions.completed and decisions.failed. With wait: true it is 201 with the decision settled.

Request​

Responses​

The decision — queued, or settled when wait is true