Skip to main content
POST /v1/decisions follows a model + state + questions -> answers shape. Audio is sent alongside as a multipart file.

Transport

Send multipart/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

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 as NO_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. A 504 with decision_pending means the work is still running. See Idempotency for how to retrieve it safely.