POST /v1/decisions follows a model + state + questions -> answers shape.
Audio is sent alongside as a multipart file.
Transport
Sendmultipart/form-data with two parts:
Request
string
default:"tazo-large"
tazo-large or tazo-small. See Models. Unknown models
return 404 before anything is queued.string | object | string[]
required
Context shared by all questions.
object
required
A map of question ID to question. At least one question. IDs are yours, must
not be blank, and come back unchanged in
answers.instructions and each criterion also accept a string, an object, or a list of
strings. Unknown fields are rejected.
Question types
- choice
- noul
- score
Pick one ID from a map of criteria. Provide at least 2 options.The answer contains the selected
choice, a probability for every option,
and confidence, which is the probability of the selected choice. The
probabilities sum to 1.A valid v1 request that goes beyond a model’s capabilities is rejected. It is
never silently reinterpreted.
The NO_TOOL pattern
“None of the above” is not a special answer type. If your application needs it, add a choice such asNO_TOOL and decide what to do when it is selected.
tazo-small requires this choice. tazo-large does not.
Response
model is always the public name, even if you submitted a legacy model ID.
Every response, including errors from a durable request, carries an
X-Tazo-Request-Id header.
Synchronous, but durable
The request is persisted before it is processed, and the call waits for the result. If your client disconnects or the wait times out, processing continues. A504 with decision_pending means the work is still running. See
Idempotency for how to retrieve it safely.