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
- 201
- 400
- 401
- 403
- 404
- 409
- 429
The decision — queued, or settled when wait is true
Bad request — a missing state, a non-object metadata bag, or a tool-bearing agent
Unauthorized
Forbidden
Decider not found
The project is paused
A generation quota is exhausted