# Data Transfer Objects and exceptions

This page describes several classes that work as Data Transfer Objects (DTOs), to be
used as input arguments for methods or functions, or as return values of these.

## Input Arguments

Instances of these classes are expected as input arguments by some methods or functions
of the SDK. They contain the configuration and other details about the inference to
perform.

```{eval-rst}
.. autodata:: imagine.ModelType
    :no-value:
```

```{eval-rst}
.. autoclass:: imagine.ReRankerRequest
    :members:
```

```{eval-rst}
.. autoclass:: imagine.ChatMessage
    :members:
```

```{eval-rst}
.. autoclass:: imagine.ChatCompletionRequest
    :members:
    :show-inheritance:
    :inherited-members:
    :exclude-members: copy, model_copy, model_dump, model_dump_json, model_json_schema, model_construct, model_extra, model_fields_set, model_parametrized_name, model_post_init, model_rebuild, model_validate, model_validate_json, model_validate_strings
```

```{eval-rst}
.. autoclass:: imagine.EmbeddingRequest
    :members:
```

```{eval-rst}
.. autoclass:: imagine.CompletionRequest
    :members:
    :show-inheritance:
    :inherited-members:
    :exclude-members: copy, model_copy, model_dump, model_dump_json, model_json_schema, model_construct, model_extra, model_fields_set, model_parametrized_name, model_post_init, model_rebuild, model_validate, model_validate_json, model_validate_strings
```

## Responses

Instances of these classes are returned by some methods or functions of the SDK. They
contain the data
the user is interested into.

```{eval-rst}
.. autoclass:: imagine.EmbeddingResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.TranslateResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.ReRankerResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.HealthResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.PingResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.UsageResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.CompletionResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.CompletionStreamResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.ChatCompletionResponse
    :members:
```
```{eval-rst}
.. autoclass:: imagine.ChatCompletionResponseChoice
    :members:
```


```{eval-rst}
.. autoclass:: imagine.ChatCompletionStreamResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.TranscribeResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.ImageResponse
    :members:
```

```{eval-rst}
.. autoclass:: imagine.ChatCompletionResponseStreamChoice
    :members:
```

```{eval-rst}
.. autoclass:: imagine.DeltaMessage
    :members:
```

```{eval-rst}
.. autoclass:: imagine.FinishReason
    :members:
```


```{eval-rst}
.. autoclass:: imagine.UsageInfo
    :members:
```

## Exceptions

The following are exceptions returned by the SDK:

```{eval-rst}
.. autoclass:: imagine.ImagineException
    :members:
```


```{eval-rst}
.. autoclass:: imagine.ImagineAPITooManyRequestsException
    :members:
```
