> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tazolabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Public types

> Requests reject unknown fields.

Requests reject unknown fields. Responses retain additional server fields. Model IDs and advertised question-type names are extensible strings. Score questions are not exposed by this SDK release.

Public wire types. Responses preserve additive server fields.

### ChoiceQuestionParam

```python theme={null}
class tazo.types.ChoiceQuestionParam
```

Dictionary input with editor completion for a choice question.

### NoulQuestionParam

```python theme={null}
class tazo.types.NoulQuestionParam
```

Dictionary input for a yes/no probability question.

### ChoiceQuestion

```python theme={null}
class tazo.types.ChoiceQuestion(*, type='choice', instructions, criteria)
```

Select an ID from two or more criteria; model-specific limits still apply.

* Parameters:

  * **type** (*Literal*\*\[**'choice'**]\*)

  * **instructions** (*str*  *|**dict**\[**str**,* *Any*\*]\* *|* *list*\*\[**str**]\*)

  * **criteria** (*dict*\*\[**str**,\* *str*  *|**dict**\[**str**,* *Any*\*]\* *|* *list*\*\[**str**]\* *|* *None*\*]\*)

### NoulQuestion

```python theme={null}
class tazo.types.NoulQuestion(*, type='noul', instructions, criteria=None)
```

Ask for the probability that a statement is true, where supported.

* Parameters:

  * **type** (*Literal*\*\[**'noul'**]\*)

  * **instructions** (*str*  *|**dict**\[**str**,* *Any*\*]\* *|* *list*\*\[**str**]\*)

  * **criteria** (*dict*\*\[**str**,\* *str*  *|**dict**\[**str**,* *Any*\*]\* *|* *list*\*\[**str**]\* *|* *None*\*]\* *|* *None*)

### DecisionRequest

```python theme={null}
class tazo.types.DecisionRequest(*, model='tazo-large', state, questions)
```

The JSON part of an uploaded decision.

* Parameters:

  * **model** (*str*)

  * **state** (*str*  *|**dict**\[**str**,* *Any*\*]\* *|* *list*\*\[**str**]\*)

  * **questions** (*dict*\*\[**str**,\* *Annotated*\*\[*[*ChoiceQuestion*](#tazo.types.ChoiceQuestion "tazo.types.ChoiceQuestion")  *|*[*NoulQuestion*](#tazo.types.NoulQuestion "tazo.types.NoulQuestion")*,\* *FieldInfo*\*(**annotation=NoneType**,\* *required=True*\*,\* *discriminator='type'**)**]\*\*]*)

### ChoiceAnswer

```python theme={null}
class tazo.types.ChoiceAnswer(*, type, choice, probabilities, confidence, **extra_data)
```

Selected choice, full probability distribution, and confidence.

* Parameters:

  * **type** (*Literal*\*\[**'choice'**]\*)

  * **choice** (*str*)

  * **probabilities** (*dict*\*\[**str**,\* *float*\*]\*)

  * **confidence** (*float*)

  * **extra\_data** (*Any*)

### NoulAnswer

```python theme={null}
class tazo.types.NoulAnswer(*, type, noul, **extra_data)
```

Probability that the requested statement is true.

* Parameters:

  * **type** (*Literal*\*\[**'noul'**]\*)

  * **noul** (*float*)

  * **extra\_data** (*Any*)

### Usage

```python theme={null}
class tazo.types.Usage(*, audio_seconds, input_tokens=None, output_tokens=None, **extra_data)
```

Audio evaluated by this result; cumulative streaming windows overlap.

* Parameters:

  * **audio\_seconds** (*float*)

  * **input\_tokens** (*int*  \*|\**None*)

  * **output\_tokens** (*int*  \*|\**None*)

  * **extra\_data** (*Any*)

### DecisionResponse

```python theme={null}
class tazo.types.DecisionResponse(*, id, model, answers, usage, elapsed_ms, request_id=None, idempotency_key=None, **extra_data)
```

Decision result with SDK metadata from headers and the submitted operation.

* Parameters:

  * **id** (*str*)

  * **model** (*str*)

  * **answers** (*dict*\*\[**str**,\* *Annotated*\*\[*[*ChoiceAnswer*](#tazo.types.ChoiceAnswer "tazo.types.ChoiceAnswer")  *|*[*NoulAnswer*](#tazo.types.NoulAnswer "tazo.types.NoulAnswer")*,\* *FieldInfo*\*(**annotation=NoneType**,\* *required=True*\*,\* *discriminator='type'**)**]\*\*]*)

  * **usage** ([*Usage*](#tazo.types.Usage "tazo.types.Usage"))

  * **elapsed\_ms** (*float*)

  * **request\_id** (*str*  \*|\**None*)

  * **idempotency\_key** (*str*  \*|\**None*)

  * **extra\_data** (*Any*)

### ModelCapabilities

```python theme={null}
class tazo.types.ModelCapabilities(*, question_types, max_questions, max_choice_options=None, requires_no_tool_choice=False, max_audio_seconds=None, required_sample_rate_hz=None, **extra_data)
```

Capabilities advertised by a model, including future question types.

* Parameters:

  * **question\_types** (*list*\*\[**str**]\*)

  * **max\_questions** (*int*)

  * **max\_choice\_options** (*int*  \*|\**None*)

  * **requires\_no\_tool\_choice** (*bool*)

  * **max\_audio\_seconds** (*float*  \*|\**None*)

  * **required\_sample\_rate\_hz** (*int*  \*|\**None*)

  * **extra\_data** (*Any*)

### Model

```python theme={null}
class tazo.types.Model(*, id, display_name, description, contract, capabilities, ready, **extra_data)
```

A public model and its current readiness.

* Parameters:

  * **id** (*str*)

  * **display\_name** (*str*)

  * **description** (*str*)

  * **contract** (*str*)

  * **capabilities** ([*ModelCapabilities*](#tazo.types.ModelCapabilities "tazo.types.ModelCapabilities"))

  * **ready** (*bool*)

  * **extra\_data** (*Any*)

### ModelList

```python theme={null}
class tazo.types.ModelList(*, models, **extra_data)
```

Response from model discovery.

* Parameters:

  * **models** (*list*\*\[*[*Model*](#tazo.types.Model "tazo.types.Model")*]\*)

  * **extra\_data** (*Any*)

### HealthStatus

```python theme={null}
class tazo.types.HealthStatus(*, status, **extra_data)
```

Expected health result, including HTTP 503 when unavailable.

* Parameters:

  * **status** (*Literal*\*\[**'ok'**,\* *'unavailable'\*\*]*)

  * **extra\_data** (*Any*)

### AudioFormat

```python theme={null}
class tazo.types.AudioFormat(*, encoding='pcm_s16le', sample_rate_hz=16000, channels=1, **extra_data)
```

Streaming audio format negotiated by the server.

* Parameters:

  * **encoding** (*Literal*\*\[**'pcm\_s16le'**]\*)

  * **sample\_rate\_hz** (*Literal*\*\[**16000**]\*)

  * **channels** (*Literal*\*\[**1**]\*)

  * **extra\_data** (*Any*)

### SessionReady

```python theme={null}
class tazo.types.SessionReady(*, type, session_id, sequence, model, config_revision, input_audio, evaluation_interval_ms, max_turn_audio_ms, max_audio_message_bytes, audio_scope, **extra_data)
```

Configuration accepted; available as the session’s `ready` attribute.

* Parameters:

  * **type** (*Literal*\*\[**'session.ready'**]\*)

  * **session\_id** (*str*)

  * **sequence** (*int*)

  * **model** (*str*)

  * **config\_revision** (*int*)

  * **input\_audio** ([*AudioFormat*](#tazo.types.AudioFormat "tazo.types.AudioFormat"))

  * **evaluation\_interval\_ms** (*int*)

  * **max\_turn\_audio\_ms** (*int*  \*|\**None*)

  * **max\_audio\_message\_bytes** (*int*)

  * **audio\_scope** (*Literal*\*\[**'turn'**,\* *'chunk'\*\*]*)

  * **extra\_data** (*Any*)

### SessionUpdated

```python theme={null}
class tazo.types.SessionUpdated(*, type, session_id, sequence, config_revision, **extra_data)
```

Replacement context and question accepted between turns.

* Parameters:

  * **type** (*Literal*\*\[**'session.updated'**]\*)

  * **session\_id** (*str*)

  * **sequence** (*int*)

  * **config\_revision** (*int*)

  * **extra\_data** (*Any*)

### DecisionEvent

```python theme={null}
class tazo.types.DecisionEvent(*, id, model, answers, usage, elapsed_ms, request_id=None, idempotency_key=None, type, session_id, sequence, turn_id, config_revision, audio_start_ms=0, audio_end_ms, **extra_data)
```

Provisional or final decision for the reported audio window.

* Parameters:

  * **id** (*str*)

  * **model** (*str*)

  * **answers** (*dict*\*\[**str**,\* *Annotated*\*\[*[*ChoiceAnswer*](#tazo.types.ChoiceAnswer "tazo.types.ChoiceAnswer")  *|*[*NoulAnswer*](#tazo.types.NoulAnswer "tazo.types.NoulAnswer")*,\* *FieldInfo*\*(**annotation=NoneType**,\* *required=True*\*,\* *discriminator='type'**)**]\*\*]*)

  * **usage** ([*Usage*](#tazo.types.Usage "tazo.types.Usage"))

  * **elapsed\_ms** (*float*)

  * **request\_id** (*str*  \*|\**None*)

  * **idempotency\_key** (*str*  \*|\**None*)

  * **type** (*Literal*\*\[**'decision.updated'**,\* *'decision.finalized'\*\*]*)

  * **session\_id** (*str*)

  * **sequence** (*int*)

  * **turn\_id** (*str*)

  * **config\_revision** (*int*)

  * **audio\_start\_ms** (*float*)

  * **audio\_end\_ms** (*float*)

  * **extra\_data** (*Any*)

### SessionClosed

```python theme={null}
class tazo.types.SessionClosed(*, type, session_id, sequence, **extra_data)
```

The server finished the session normally.

* Parameters:

  * **type** (*Literal*\*\[**'session.closed'**]\*)

  * **session\_id** (*str*)

  * **sequence** (*int*)

  * **extra\_data** (*Any*)

### ErrorEvent

```python theme={null}
class tazo.types.ErrorEvent(*, type, error, fatal, session_id=None, sequence=None, **extra_data)
```

A recoverable error event; fatal errors become StreamingError exceptions.

* Parameters:

  * **type** (*Literal*\*\[**'error'**]\*)

  * **error** (*StreamErrorDetail*)

  * **fatal** (*bool*)

  * **session\_id** (*str*  \*|\**None*)

  * **sequence** (*int*  \*|\**None*)

  * **extra\_data** (*Any*)

### UnknownEvent

```python theme={null}
class tazo.types.UnknownEvent(*, type, **extra_data)
```

A future event type. Its additional fields are preserved.

* Parameters:

  * **type** (*str*)

  * **extra\_data** (*Any*)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.