REST API Objects

This page documents all the public data types and response models used by the REST API methods. These objects represent the data structures returned by REST API calls and used as parameters.

The types are automatically generated from the REST API definition and include classes for resources, page objects for pagination, filter objects for queries, and various utility types.

Note

These are the raw REST API data types. For the main SDK objects like Dataset, Experiment, etc., see the main Opik documentation and the Objects section in the main documentation.

class opik.rest_api.types.AssistantMessage(*, role: Literal['system', 'user', 'assistant', 'tool', 'function'] | Any | None = None, content: str | None = None, name: str | None = None, tool_calls: List[ToolCall] | None = None, refusal: bool | None = None, function_call: FunctionCall | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

role: Literal['system', 'user', 'assistant', 'tool', 'function'] | Any | None
content: str | None
name: str | None
tool_calls: List[ToolCall] | None
refusal: bool | None
function_call: FunctionCall | None
class opik.rest_api.types.Attachment(*, link: str | None = None, file_name: str, file_size: int, mime_type: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

file_name: str
file_size: int
mime_type: str
class opik.rest_api.types.AttachmentPage(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.attachment.Attachment] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945f37530>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[Attachment] | None
sortable_by: FieldMetadata object at 0x7fa945f37530>]
class opik.rest_api.types.AutomationRuleEvaluatorLlmAsJudge(*, code: LlmAsJudgeCode | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: LlmAsJudgeCode | None
class opik.rest_api.types.AutomationRuleEvaluatorLlmAsJudgePublic(*, code: LlmAsJudgeCodePublic | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: LlmAsJudgeCodePublic | None
class opik.rest_api.types.AutomationRuleEvaluatorLlmAsJudgeWrite(*, code: LlmAsJudgeCodeWrite | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: LlmAsJudgeCodeWrite | None
class opik.rest_api.types.AutomationRuleEvaluatorObjectPublic_LlmAsJudge(*, id: str | None = None, project_id: str | None = None, project_name: str | None = None, name: str, sampling_rate: float | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['llm_as_judge'] = 'llm_as_judge', code: LlmAsJudgeCodePublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['llm_as_judge']
code: Optional[LlmAsJudgeCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorObjectPublic_UserDefinedMetricPython(*, id: str | None = None, project_id: str | None = None, project_name: str | None = None, name: str, sampling_rate: float | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['user_defined_metric_python'] = 'user_defined_metric_python', code: UserDefinedMetricPythonCodePublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['user_defined_metric_python']
code: Optional[UserDefinedMetricPythonCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: List[AutomationRuleEvaluatorObjectPublic_LlmAsJudge | AutomationRuleEvaluatorObjectPublic_UserDefinedMetricPython] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[AutomationRuleEvaluatorObjectPublic_LlmAsJudge | AutomationRuleEvaluatorObjectPublic_UserDefinedMetricPython] | None
class opik.rest_api.types.AutomationRuleEvaluatorPublic_LlmAsJudge(*, id: str | None = None, project_id: str | None = None, project_name: str | None = None, name: str, sampling_rate: float | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['llm_as_judge'] = 'llm_as_judge', code: LlmAsJudgeCodePublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['llm_as_judge']
code: Optional[LlmAsJudgeCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorPublic_UserDefinedMetricPython(*, id: str | None = None, project_id: str | None = None, project_name: str | None = None, name: str, sampling_rate: float | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['user_defined_metric_python'] = 'user_defined_metric_python', code: UserDefinedMetricPythonCodePublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['user_defined_metric_python']
code: Optional[UserDefinedMetricPythonCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorUpdateLlmAsJudge(*, code: LlmAsJudgeCode | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: LlmAsJudgeCode | None
class opik.rest_api.types.AutomationRuleEvaluatorUpdateUserDefinedMetricPython(*, code: UserDefinedMetricPythonCode | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: UserDefinedMetricPythonCode | None
class opik.rest_api.types.AutomationRuleEvaluatorUpdate_LlmAsJudge(*, name: str, sampling_rate: float | None = None, project_id: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['llm_as_judge'] = 'llm_as_judge', code: LlmAsJudgeCode | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['llm_as_judge']
code: Optional[LlmAsJudgeCode]
class opik.rest_api.types.AutomationRuleEvaluatorUpdate_UserDefinedMetricPython(*, name: str, sampling_rate: float | None = None, project_id: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['user_defined_metric_python'] = 'user_defined_metric_python', code: UserDefinedMetricPythonCode | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['user_defined_metric_python']
code: Optional[UserDefinedMetricPythonCode]
class opik.rest_api.types.AutomationRuleEvaluatorUserDefinedMetricPython(*, code: UserDefinedMetricPythonCode | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: UserDefinedMetricPythonCode | None
class opik.rest_api.types.AutomationRuleEvaluatorUserDefinedMetricPythonPublic(*, code: UserDefinedMetricPythonCodePublic | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: UserDefinedMetricPythonCodePublic | None
class opik.rest_api.types.AutomationRuleEvaluatorUserDefinedMetricPythonWrite(*, code: UserDefinedMetricPythonCodeWrite | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: UserDefinedMetricPythonCodeWrite | None
class opik.rest_api.types.AutomationRuleEvaluatorWrite_LlmAsJudge(*, project_id: str | None = None, name: str, sampling_rate: float | None = None, action: Literal['evaluator'] | None = None, type: Literal['llm_as_judge'] = 'llm_as_judge', code: LlmAsJudgeCodeWrite | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['llm_as_judge']
code: Optional[LlmAsJudgeCodeWrite]
class opik.rest_api.types.AutomationRuleEvaluatorWrite_UserDefinedMetricPython(*, project_id: str | None = None, name: str, sampling_rate: float | None = None, action: Literal['evaluator'] | None = None, type: Literal['user_defined_metric_python'] = 'user_defined_metric_python', code: UserDefinedMetricPythonCodeWrite | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['user_defined_metric_python']
code: Optional[UserDefinedMetricPythonCodeWrite]
class opik.rest_api.types.AutomationRuleEvaluator_LlmAsJudge(*, id: str | None = None, project_id: str | None = None, project_name: str | None = None, name: str, sampling_rate: float | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['llm_as_judge'] = 'llm_as_judge', code: LlmAsJudgeCode | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['llm_as_judge']
code: Optional[LlmAsJudgeCode]
class opik.rest_api.types.AutomationRuleEvaluator_UserDefinedMetricPython(*, id: str | None = None, project_id: str | None = None, project_name: str | None = None, name: str, sampling_rate: float | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, action: Literal['evaluator'] | None = None, type: Literal['user_defined_metric_python'] = 'user_defined_metric_python', code: UserDefinedMetricPythonCode | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['user_defined_metric_python']
code: Optional[UserDefinedMetricPythonCode]
class opik.rest_api.types.AvgValueStatPublic(*, value: float | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

value: float | None
class opik.rest_api.types.BatchDelete(*, ids: List[str], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

ids: List[str]
class opik.rest_api.types.BiInformation(*, workspace_id: str | None = None, user: str | None = None, count: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

workspace_id: str | None
user: str | None
count: int | None
class opik.rest_api.types.BiInformationResponse(*, bi_information: List[BiInformation] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

bi_information: List[BiInformation] | None
class opik.rest_api.types.CategoricalFeedbackDefinition(*, details: CategoricalFeedbackDetail | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: CategoricalFeedbackDetail | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.CategoricalFeedbackDefinitionCreate(*, details: CategoricalFeedbackDetailCreate | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: CategoricalFeedbackDetailCreate | None
class opik.rest_api.types.CategoricalFeedbackDefinitionPublic(*, details: CategoricalFeedbackDetailPublic | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: CategoricalFeedbackDetailPublic | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.CategoricalFeedbackDefinitionUpdate(*, details: CategoricalFeedbackDetailUpdate | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: CategoricalFeedbackDetailUpdate | None
class opik.rest_api.types.CategoricalFeedbackDetail(*, categories: Dict[str, float], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

categories: Dict[str, float]
class opik.rest_api.types.CategoricalFeedbackDetailCreate(*, categories: Dict[str, float], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

categories: Dict[str, float]
class opik.rest_api.types.CategoricalFeedbackDetailPublic(*, categories: Dict[str, float], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

categories: Dict[str, float]
class opik.rest_api.types.CategoricalFeedbackDetailUpdate(*, categories: Dict[str, float], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

categories: Dict[str, float]
class opik.rest_api.types.ChatCompletionChoice(*, index: int | None = None, message: AssistantMessage | None = None, delta: Delta | None = None, finish_reason: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

index: int | None
message: AssistantMessage | None
delta: Delta | None
finish_reason: str | None
class opik.rest_api.types.ChatCompletionResponse(*, id: str | None = None, created: int | None = None, model: str | None = None, choices: List[ChatCompletionChoice] | None = None, usage: Usage | None = None, system_fingerprint: str | None = None, service_tier: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
created: int | None
model: str | None
choices: List[ChatCompletionChoice] | None
usage: Usage | None
system_fingerprint: str | None
service_tier: str | None
class opik.rest_api.types.Check(*, name: Literal['TOPIC', 'PII'] | Any | None = None, result: Literal['passed', 'failed'] | Any | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: Literal['TOPIC', 'PII'] | Any | None
result: Literal['passed', 'failed'] | Any | None
class opik.rest_api.types.CheckPublic(*, name: Literal['TOPIC', 'PII'] | Any | None = None, result: Literal['passed', 'failed'] | Any | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: Literal['TOPIC', 'PII'] | Any | None
result: Literal['passed', 'failed'] | Any | None
class opik.rest_api.types.ChunkedOutputJsonNode(*, type: ChunkedOutputJsonNodeType | None = None, closed: bool | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: ChunkedOutputJsonNodeType | None
closed: bool | None
class opik.rest_api.types.ChunkedOutputJsonNodePublic(*, type: ChunkedOutputJsonNodePublicType | None = None, closed: bool | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: ChunkedOutputJsonNodePublicType | None
closed: bool | None
class opik.rest_api.types.ChunkedOutputJsonNodePublicType(*, type_name: ~typing.Annotated[str | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ef20f0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type_name: FieldMetadata object at 0x7fa945ef20f0>]
class opik.rest_api.types.ChunkedOutputJsonNodeType(*, type_name: ~typing.Annotated[str | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ef1d90>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type_name: FieldMetadata object at 0x7fa945ef1d90>]
class opik.rest_api.types.Column(*, name: str | None = None, types: ~typing.List[~typing.Literal['string', 'number', 'object', 'boolean', 'array', 'null'] | ~typing.Any] | None = None, filter_field_prefix: str | None = None, filter_field: ~typing.Annotated[str | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ef2390>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
types: List[Literal['string', 'number', 'object', 'boolean', 'array', 'null'] | Any] | None
filter_field_prefix: str | None
filter_field: FieldMetadata object at 0x7fa945ef2390>]

The field to use for filtering

class opik.rest_api.types.ColumnCompare(*, name: str | None = None, types: ~typing.List[~typing.Literal['string', 'number', 'object', 'boolean', 'array', 'null'] | ~typing.Any] | None = None, filter_field_prefix: str | None = None, filter_field: ~typing.Annotated[str | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa94604cd70>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
types: List[Literal['string', 'number', 'object', 'boolean', 'array', 'null'] | Any] | None
filter_field_prefix: str | None
filter_field: FieldMetadata object at 0x7fa94604cd70>]

The field to use for filtering

class opik.rest_api.types.ColumnPublic(*, name: str | None = None, types: ~typing.List[~typing.Literal['string', 'number', 'object', 'boolean', 'array', 'null'] | ~typing.Any] | None = None, filter_field_prefix: str | None = None, filter_field: ~typing.Annotated[str | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ef29c0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
types: List[Literal['string', 'number', 'object', 'boolean', 'array', 'null'] | Any] | None
filter_field_prefix: str | None
filter_field: FieldMetadata object at 0x7fa945ef29c0>]

The field to use for filtering

class opik.rest_api.types.Comment(*, id: str | None = None, text: str, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
text: str
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.CommentCompare(*, id: str | None = None, text: str, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
text: str
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.CommentPublic(*, id: str | None = None, text: str, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
text: str
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.CompleteMultipartUploadRequest(*, file_name: str, project_name: str | None = None, entity_type: Literal['trace', 'span'] | Any, entity_id: str, container_id: str | None = None, file_size: int, mime_type: str | None = None, upload_id: str, uploaded_file_parts: List[MultipartUploadPart], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

file_name: str
project_name: str | None

If null, the default project is used

entity_type: Literal['trace', 'span'] | Any
entity_id: str
container_id: str | None
file_size: int
mime_type: str | None
upload_id: str
uploaded_file_parts: List[MultipartUploadPart]
class opik.rest_api.types.CompletionTokensDetails(*, reasoning_tokens: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

reasoning_tokens: int | None
class opik.rest_api.types.CountValueStatPublic(*, value: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

value: int | None
class opik.rest_api.types.DataPointNumberPublic(*, time: datetime, value: float | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

time: datetime
value: float | None
class opik.rest_api.types.DatasetItem(*, id: str | None = None, trace_id: str | None = None, span_id: str | None = None, source: Literal['manual', 'trace', 'span', 'sdk'] | Any, data: Dict[str, Any | None], experiment_items: List[ExperimentItem] | None = None, dataset_id: str | None = None, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
trace_id: str | None
span_id: str | None
source: Literal['manual', 'trace', 'span', 'sdk'] | Any
data: Dict[str, Any | None]
experiment_items: List[ExperimentItem] | None
dataset_id: str | None
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.DatasetItemBatch(*, dataset_name: str | None = None, dataset_id: str | None = None, items: List[DatasetItem], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

dataset_name: str | None

If null, dataset_id must be provided

dataset_id: str | None

If null, dataset_name must be provided

items: List[DatasetItem]
class opik.rest_api.types.DatasetItemCompare(*, id: str | None = None, trace_id: str | None = None, span_id: str | None = None, source: Literal['manual', 'trace', 'span', 'sdk'] | Any, data: Dict[str, Any | None], experiment_items: List[ExperimentItemCompare] | None = None, dataset_id: str | None = None, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
trace_id: str | None
span_id: str | None
source: Literal['manual', 'trace', 'span', 'sdk'] | Any
data: Dict[str, Any | None]
experiment_items: List[ExperimentItemCompare] | None
dataset_id: str | None
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.DatasetItemPageCompare(*, content: List[DatasetItemCompare] | None = None, page: int | None = None, size: int | None = None, total: int | None = None, columns: List[ColumnCompare] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

content: List[DatasetItemCompare] | None
page: int | None
size: int | None
total: int | None
columns: List[ColumnCompare] | None
class opik.rest_api.types.DatasetItemPagePublic(*, content: List[DatasetItemPublic] | None = None, page: int | None = None, size: int | None = None, total: int | None = None, columns: List[ColumnPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

content: List[DatasetItemPublic] | None
page: int | None
size: int | None
total: int | None
columns: List[ColumnPublic] | None
class opik.rest_api.types.DatasetItemPublic(*, id: str | None = None, trace_id: str | None = None, span_id: str | None = None, source: Literal['manual', 'trace', 'span', 'sdk'] | Any, data: Dict[str, Any | None], experiment_items: List[ExperimentItemPublic] | None = None, dataset_id: str | None = None, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
trace_id: str | None
span_id: str | None
source: Literal['manual', 'trace', 'span', 'sdk'] | Any
data: Dict[str, Any | None]
experiment_items: List[ExperimentItemPublic] | None
dataset_id: str | None
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.DatasetItemWrite(*, id: str | None = None, trace_id: str | None = None, span_id: str | None = None, source: Literal['manual', 'trace', 'span', 'sdk'] | Any, data: Dict[str, Any | None], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
trace_id: str | None
span_id: str | None
source: Literal['manual', 'trace', 'span', 'sdk'] | Any
data: Dict[str, Any | None]
class opik.rest_api.types.DatasetPagePublic(*, content: List[DatasetPublic] | None = None, page: int | None = None, size: int | None = None, total: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

content: List[DatasetPublic] | None
page: int | None
size: int | None
total: int | None
class opik.rest_api.types.DatasetPublic(*, id: str | None = None, name: str, visibility: Literal['private', 'public'] | Any | None = None, description: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, experiment_count: int | None = None, dataset_items_count: int | None = None, optimization_count: int | None = None, most_recent_experiment_at: datetime | None = None, last_created_experiment_at: datetime | None = None, most_recent_optimization_at: datetime | None = None, last_created_optimization_at: datetime | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str
visibility: Literal['private', 'public'] | Any | None
description: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
experiment_count: int | None
dataset_items_count: int | None
optimization_count: int | None
most_recent_experiment_at: datetime | None
last_created_experiment_at: datetime | None
most_recent_optimization_at: datetime | None
last_created_optimization_at: datetime | None
class opik.rest_api.types.DeleteAttachmentsRequest(*, file_names: List[str], entity_type: Literal['trace', 'span'] | Any, entity_id: str, container_id: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

file_names: List[str]
entity_type: Literal['trace', 'span'] | Any
entity_id: str
container_id: str
class opik.rest_api.types.DeleteFeedbackScore(*, name: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
class opik.rest_api.types.DeleteIdsHolder(*, ids: List[str], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

ids: List[str]
class opik.rest_api.types.Delta(*, role: str | None = None, content: str | None = None, tool_calls: List[ToolCall] | None = None, function_call: FunctionCall | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

role: str | None
content: str | None
tool_calls: List[ToolCall] | None
function_call: FunctionCall | None
class opik.rest_api.types.ErrorCountWithDeviation(*, count: int | None = None, deviation: int | None = None, deviation_percentage: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

count: int | None
deviation: int | None
deviation_percentage: int | None
class opik.rest_api.types.ErrorCountWithDeviationDetailed(*, count: int | None = None, deviation: int | None = None, deviation_percentage: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

count: int | None
deviation: int | None
deviation_percentage: int | None
class opik.rest_api.types.ErrorInfo(*, exception_type: str, message: str | None = None, traceback: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

exception_type: str
message: str | None
traceback: str
class opik.rest_api.types.ErrorInfoExperimentItemBulkWriteView(*, exception_type: str, message: str | None = None, traceback: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

exception_type: str
message: str | None
traceback: str
class opik.rest_api.types.ErrorInfoPublic(*, exception_type: str, message: str | None = None, traceback: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

exception_type: str
message: str | None
traceback: str
class opik.rest_api.types.ErrorInfoWrite(*, exception_type: str, message: str | None = None, traceback: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

exception_type: str
message: str | None
traceback: str
class opik.rest_api.types.ErrorMessage(*, code: int | None = None, message: str | None = None, details: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: int | None
message: str | None
details: str | None
class opik.rest_api.types.ErrorMessageDetail(*, code: int | None = None, message: str | None = None, details: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: int | None
message: str | None
details: str | None
class opik.rest_api.types.ErrorMessageDetailed(*, errors: List[str] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

errors: List[str] | None
class opik.rest_api.types.ErrorMessagePublic(*, code: int | None = None, message: str | None = None, details: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

code: int | None
message: str | None
details: str | None
class opik.rest_api.types.ExperimentItem(*, id: str | None = None, experiment_id: str, dataset_item_id: str, trace_id: str, input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, feedback_scores: List[FeedbackScore] | None = None, comments: List[Comment] | None = None, total_estimated_cost: float | None = None, duration: float | None = None, usage: Dict[str, int] | None = None, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, trace_visibility_mode: Literal['default', 'hidden'] | Any | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
experiment_id: str
dataset_item_id: str
trace_id: str
input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
feedback_scores: List[FeedbackScore] | None
comments: List[Comment] | None
total_estimated_cost: float | None
duration: float | None
usage: Dict[str, int] | None
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
trace_visibility_mode: Literal['default', 'hidden'] | Any | None
class opik.rest_api.types.ExperimentItemBulkRecord(*, dataset_item_id: str, evaluate_task_result: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, trace: Trace | None = None, spans: List[Span] | None = None, feedback_scores: List[FeedbackScore] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

dataset_item_id: str
evaluate_task_result: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
trace: Trace | None
spans: List[Span] | None
feedback_scores: List[FeedbackScore] | None
class opik.rest_api.types.ExperimentItemBulkRecordExperimentItemBulkWriteView(*, dataset_item_id: str, evaluate_task_result: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, trace: TraceExperimentItemBulkWriteView | None = None, spans: List[SpanExperimentItemBulkWriteView] | None = None, feedback_scores: List[FeedbackScoreExperimentItemBulkWriteView] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

dataset_item_id: str
evaluate_task_result: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
trace: TraceExperimentItemBulkWriteView | None
spans: List[SpanExperimentItemBulkWriteView] | None
feedback_scores: List[FeedbackScoreExperimentItemBulkWriteView] | None
class opik.rest_api.types.ExperimentItemBulkUpload(*, experiment_name: str, dataset_name: str, items: List[ExperimentItemBulkRecord], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

experiment_name: str
dataset_name: str
items: List[ExperimentItemBulkRecord]
class opik.rest_api.types.ExperimentItemCompare(*, id: str | None = None, experiment_id: str, dataset_item_id: str, trace_id: str, input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, feedback_scores: List[FeedbackScoreCompare] | None = None, comments: List[CommentCompare] | None = None, total_estimated_cost: float | None = None, duration: float | None = None, usage: Dict[str, int] | None = None, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, trace_visibility_mode: Literal['default', 'hidden'] | Any | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
experiment_id: str
dataset_item_id: str
trace_id: str
input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
feedback_scores: List[FeedbackScoreCompare] | None
comments: List[CommentCompare] | None
total_estimated_cost: float | None
duration: float | None
usage: Dict[str, int] | None
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
trace_visibility_mode: Literal['default', 'hidden'] | Any | None
class opik.rest_api.types.ExperimentItemPublic(*, id: str | None = None, experiment_id: str, dataset_item_id: str, trace_id: str, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, trace_visibility_mode: Literal['default', 'hidden'] | Any | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
experiment_id: str
dataset_item_id: str
trace_id: str
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
trace_visibility_mode: Literal['default', 'hidden'] | Any | None
class opik.rest_api.types.ExperimentPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.experiment_public.ExperimentPublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945e2da00>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[ExperimentPublic] | None
sortable_by: FieldMetadata object at 0x7fa945e2da00>]
class opik.rest_api.types.ExperimentPublic(*, id: str | None = None, dataset_name: str, dataset_id: str | None = None, name: str | None = None, metadata: Dict[str, Any | None] | None = None, type: Literal['regular', 'trial', 'mini-batch'] | Any | None = None, optimization_id: str | None = None, feedback_scores: List[FeedbackScoreAveragePublic] | None = None, comments: List[CommentPublic] | None = None, trace_count: int | None = None, created_at: datetime | None = None, duration: PercentageValuesPublic | None = None, total_estimated_cost: float | None = None, total_estimated_cost_avg: float | None = None, usage: Dict[str, float] | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, prompt_version: PromptVersionLinkPublic | None = None, prompt_versions: List[PromptVersionLinkPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
dataset_name: str
dataset_id: str | None
name: str | None
metadata: Dict[str, Any | None] | None
type: Literal['regular', 'trial', 'mini-batch'] | Any | None
optimization_id: str | None
feedback_scores: List[FeedbackScoreAveragePublic] | None
comments: List[CommentPublic] | None
trace_count: int | None
created_at: datetime | None
duration: PercentageValuesPublic | None
total_estimated_cost: float | None
total_estimated_cost_avg: float | None
usage: Dict[str, float] | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
prompt_version: PromptVersionLinkPublic | None
prompt_versions: List[PromptVersionLinkPublic] | None
class opik.rest_api.types.FeedbackCreate_Categorical(*, id: str | None = None, name: str, type: Literal['categorical'] = 'categorical', details: CategoricalFeedbackDetailCreate | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['categorical']
details: Optional[CategoricalFeedbackDetailCreate]
class opik.rest_api.types.FeedbackCreate_Numerical(*, id: str | None = None, name: str, type: Literal['numerical'] = 'numerical', details: NumericalFeedbackDetailCreate | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['numerical']
details: Optional[NumericalFeedbackDetailCreate]
class opik.rest_api.types.FeedbackDefinitionPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: List[FeedbackObjectPublic_Numerical | FeedbackObjectPublic_Categorical] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[FeedbackObjectPublic_Numerical | FeedbackObjectPublic_Categorical] | None
class opik.rest_api.types.FeedbackObjectPublic_Categorical(*, id: str | None = None, name: str, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, type: Literal['categorical'] = 'categorical', details: CategoricalFeedbackDetailPublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['categorical']
details: Optional[CategoricalFeedbackDetailPublic]
created_at: Optional[dt.datetime]
created_by: Optional[str]
last_updated_at: Optional[dt.datetime]
last_updated_by: Optional[str]
class opik.rest_api.types.FeedbackObjectPublic_Numerical(*, id: str | None = None, name: str, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, type: Literal['numerical'] = 'numerical', details: NumericalFeedbackDetailPublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['numerical']
details: Optional[NumericalFeedbackDetailPublic]
created_at: Optional[dt.datetime]
created_by: Optional[str]
last_updated_at: Optional[dt.datetime]
last_updated_by: Optional[str]
class opik.rest_api.types.FeedbackPublic_Categorical(*, id: str | None = None, name: str, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, type: Literal['categorical'] = 'categorical', details: CategoricalFeedbackDetailPublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['categorical']
details: Optional[CategoricalFeedbackDetailPublic]
created_at: Optional[dt.datetime]
created_by: Optional[str]
last_updated_at: Optional[dt.datetime]
last_updated_by: Optional[str]
class opik.rest_api.types.FeedbackPublic_Numerical(*, id: str | None = None, name: str, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, type: Literal['numerical'] = 'numerical', details: NumericalFeedbackDetailPublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['numerical']
details: Optional[NumericalFeedbackDetailPublic]
created_at: Optional[dt.datetime]
created_by: Optional[str]
last_updated_at: Optional[dt.datetime]
last_updated_by: Optional[str]
class opik.rest_api.types.FeedbackScore(*, name: str, category_name: str | None = None, value: float, reason: str | None = None, source: Literal['ui', 'sdk', 'online_scoring'] | Any, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
category_name: str | None
value: float
reason: str | None
source: Literal['ui', 'sdk', 'online_scoring'] | Any
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.FeedbackScoreAverage(*, name: str, value: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
value: float
class opik.rest_api.types.FeedbackScoreAverageDetailed(*, name: str, value: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
value: float
class opik.rest_api.types.FeedbackScoreAveragePublic(*, name: str, value: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
value: float
class opik.rest_api.types.FeedbackScoreBatch(*, scores: List[FeedbackScoreBatchItem], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

scores: List[FeedbackScoreBatchItem]
class opik.rest_api.types.FeedbackScoreBatchItem(*, id: str, project_name: str | None = None, name: str, category_name: str | None = None, value: float, reason: str | None = None, source: Literal['ui', 'sdk', 'online_scoring'] | Any, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str
project_name: str | None

If null, the default project is used

name: str
category_name: str | None
value: float
reason: str | None
source: Literal['ui', 'sdk', 'online_scoring'] | Any
class opik.rest_api.types.FeedbackScoreCompare(*, name: str, category_name: str | None = None, value: float, reason: str | None = None, source: Literal['ui', 'sdk', 'online_scoring'] | Any, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
category_name: str | None
value: float
reason: str | None
source: Literal['ui', 'sdk', 'online_scoring'] | Any
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.FeedbackScoreExperimentItemBulkWriteView(*, name: str, category_name: str | None = None, value: float, reason: str | None = None, source: Literal['ui', 'sdk', 'online_scoring'] | Any, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
category_name: str | None
value: float
reason: str | None
source: Literal['ui', 'sdk', 'online_scoring'] | Any
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.FeedbackScoreNames(*, scores: List[ScoreName] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

scores: List[ScoreName] | None
class opik.rest_api.types.FeedbackScorePublic(*, name: str, category_name: str | None = None, value: float, reason: str | None = None, source: Literal['ui', 'sdk', 'online_scoring'] | Any, created_at: datetime | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
category_name: str | None
value: float
reason: str | None
source: Literal['ui', 'sdk', 'online_scoring'] | Any
created_at: datetime | None
last_updated_at: datetime | None
created_by: str | None
last_updated_by: str | None
class opik.rest_api.types.FeedbackUpdate_Categorical(*, id: str | None = None, name: str, type: Literal['categorical'] = 'categorical', details: CategoricalFeedbackDetailUpdate | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['categorical']
details: Optional[CategoricalFeedbackDetailUpdate]
class opik.rest_api.types.FeedbackUpdate_Numerical(*, id: str | None = None, name: str, type: Literal['numerical'] = 'numerical', details: NumericalFeedbackDetailUpdate | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['numerical']
details: Optional[NumericalFeedbackDetailUpdate]
class opik.rest_api.types.Feedback_Categorical(*, id: str | None = None, name: str, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, type: Literal['categorical'] = 'categorical', details: CategoricalFeedbackDetail | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['categorical']
details: Optional[CategoricalFeedbackDetail]
created_at: Optional[dt.datetime]
created_by: Optional[str]
last_updated_at: Optional[dt.datetime]
last_updated_by: Optional[str]
class opik.rest_api.types.Feedback_Numerical(*, id: str | None = None, name: str, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, type: Literal['numerical'] = 'numerical', details: NumericalFeedbackDetail | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['numerical']
details: Optional[NumericalFeedbackDetail]
created_at: Optional[dt.datetime]
created_by: Optional[str]
last_updated_at: Optional[dt.datetime]
last_updated_by: Optional[str]
class opik.rest_api.types.Function(*, name: str | None = None, description: str | None = None, strict: bool | None = None, parameters: Dict[str, Dict[str, Any | None]] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
description: str | None
strict: bool | None
parameters: Dict[str, Dict[str, Any | None]] | None
class opik.rest_api.types.FunctionCall(*, name: str | None = None, arguments: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
arguments: str | None
class opik.rest_api.types.Guardrail(*, id: str | None = None, entity_id: str, secondary_id: str, project_name: str | None = None, name: Literal['TOPIC', 'PII'] | Any, result: Literal['passed', 'failed'] | Any, config: Dict[str, Any | None], details: Dict[str, Any | None], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
entity_id: str
secondary_id: str
project_name: str | None

If null, the default project is used

name: Literal['TOPIC', 'PII'] | Any
result: Literal['passed', 'failed'] | Any
config: Dict[str, Any | None]
details: Dict[str, Any | None]
class opik.rest_api.types.GuardrailBatch(*, guardrails: List[Guardrail], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

guardrails: List[Guardrail]
class opik.rest_api.types.GuardrailWrite(*, entity_id: str, secondary_id: str, project_name: str | None = None, name: Literal['TOPIC', 'PII'] | Any, result: Literal['passed', 'failed'] | Any, config: Dict[str, Any | None], details: Dict[str, Any | None], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

entity_id: str
secondary_id: str
project_name: str | None

If null, the default project is used

name: Literal['TOPIC', 'PII'] | Any
result: Literal['passed', 'failed'] | Any
config: Dict[str, Any | None]
details: Dict[str, Any | None]
class opik.rest_api.types.GuardrailsValidation(*, span_id: str | None = None, checks: List[Check] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

span_id: str | None
checks: List[Check] | None
class opik.rest_api.types.GuardrailsValidationPublic(*, span_id: str | None = None, checks: List[CheckPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

span_id: str | None
checks: List[CheckPublic] | None
class opik.rest_api.types.JsonSchema(*, name: str | None = None, strict: bool | None = None, schema_: ~typing.Annotated[~typing.Dict[str, ~typing.Dict[str, ~typing.Any | None]] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945c55d00>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
strict: bool | None
schema_: FieldMetadata object at 0x7fa945c55d00>]
class opik.rest_api.types.LlmAsJudgeCode(*, model: ~opik.rest_api.types.llm_as_judge_model_parameters.LlmAsJudgeModelParameters, messages: ~typing.List[~opik.rest_api.types.llm_as_judge_message.LlmAsJudgeMessage], variables: ~typing.Dict[str, str], schema_: ~typing.Annotated[~typing.List[~opik.rest_api.types.llm_as_judge_output_schema.LlmAsJudgeOutputSchema], <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa9463fe7b0>], **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model: LlmAsJudgeModelParameters
messages: List[LlmAsJudgeMessage]
variables: Dict[str, str]
schema_: FieldMetadata object at 0x7fa9463fe7b0>]
class opik.rest_api.types.LlmAsJudgeCodePublic(*, model: ~opik.rest_api.types.llm_as_judge_model_parameters_public.LlmAsJudgeModelParametersPublic, messages: ~typing.List[~opik.rest_api.types.llm_as_judge_message_public.LlmAsJudgeMessagePublic], variables: ~typing.Dict[str, str], schema_: ~typing.Annotated[~typing.List[~opik.rest_api.types.llm_as_judge_output_schema_public.LlmAsJudgeOutputSchemaPublic], <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa9463ff3e0>], **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model: LlmAsJudgeModelParametersPublic
messages: List[LlmAsJudgeMessagePublic]
variables: Dict[str, str]
schema_: FieldMetadata object at 0x7fa9463ff3e0>]
class opik.rest_api.types.LlmAsJudgeCodeWrite(*, model: ~opik.rest_api.types.llm_as_judge_model_parameters_write.LlmAsJudgeModelParametersWrite, messages: ~typing.List[~opik.rest_api.types.llm_as_judge_message_write.LlmAsJudgeMessageWrite], variables: ~typing.Dict[str, str], schema_: ~typing.Annotated[~typing.List[~opik.rest_api.types.llm_as_judge_output_schema_write.LlmAsJudgeOutputSchemaWrite], <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945f07e30>], **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model: LlmAsJudgeModelParametersWrite
messages: List[LlmAsJudgeMessageWrite]
variables: Dict[str, str]
schema_: FieldMetadata object at 0x7fa945f07e30>]
class opik.rest_api.types.LlmAsJudgeMessage(*, role: Literal['SYSTEM', 'USER', 'AI', 'TOOL_EXECUTION_RESULT', 'CUSTOM'] | Any, content: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

role: Literal['SYSTEM', 'USER', 'AI', 'TOOL_EXECUTION_RESULT', 'CUSTOM'] | Any
content: str
class opik.rest_api.types.LlmAsJudgeMessagePublic(*, role: Literal['SYSTEM', 'USER', 'AI', 'TOOL_EXECUTION_RESULT', 'CUSTOM'] | Any, content: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

role: Literal['SYSTEM', 'USER', 'AI', 'TOOL_EXECUTION_RESULT', 'CUSTOM'] | Any
content: str
class opik.rest_api.types.LlmAsJudgeMessageWrite(*, role: Literal['SYSTEM', 'USER', 'AI', 'TOOL_EXECUTION_RESULT', 'CUSTOM'] | Any, content: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

role: Literal['SYSTEM', 'USER', 'AI', 'TOOL_EXECUTION_RESULT', 'CUSTOM'] | Any
content: str
class opik.rest_api.types.LlmAsJudgeModelParameters(*, name: str, temperature: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
temperature: float
class opik.rest_api.types.LlmAsJudgeModelParametersPublic(*, name: str, temperature: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
temperature: float
class opik.rest_api.types.LlmAsJudgeModelParametersWrite(*, name: str, temperature: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
temperature: float
class opik.rest_api.types.LlmAsJudgeOutputSchema(*, name: str, type: Literal['BOOLEAN', 'INTEGER', 'DOUBLE'] | Any, description: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
type: Literal['BOOLEAN', 'INTEGER', 'DOUBLE'] | Any
description: str
class opik.rest_api.types.LlmAsJudgeOutputSchemaPublic(*, name: str, type: Literal['BOOLEAN', 'INTEGER', 'DOUBLE'] | Any, description: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
type: Literal['BOOLEAN', 'INTEGER', 'DOUBLE'] | Any
description: str
class opik.rest_api.types.LlmAsJudgeOutputSchemaWrite(*, name: str, type: Literal['BOOLEAN', 'INTEGER', 'DOUBLE'] | Any, description: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
type: Literal['BOOLEAN', 'INTEGER', 'DOUBLE'] | Any
description: str
class opik.rest_api.types.LogItem(*, timestamp: datetime | None = None, rule_id: str | None = None, level: Literal['INFO', 'WARN', 'ERROR', 'DEBUG', 'TRACE'] | Any | None = None, message: str | None = None, markers: Dict[str, str] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

timestamp: datetime | None
rule_id: str | None
level: Literal['INFO', 'WARN', 'ERROR', 'DEBUG', 'TRACE'] | Any | None
message: str | None
markers: Dict[str, str] | None
class opik.rest_api.types.LogPage(*, content: List[LogItem] | None = None, page: int | None = None, size: int | None = None, total: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

content: List[LogItem] | None
page: int | None
size: int | None
total: int | None
class opik.rest_api.types.MultipartUploadPart(*, e_tag: str, part_number: int, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

e_tag: str
part_number: int
class opik.rest_api.types.NumericalFeedbackDefinition(*, details: NumericalFeedbackDetail | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: NumericalFeedbackDetail | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.NumericalFeedbackDefinitionCreate(*, details: NumericalFeedbackDetailCreate | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: NumericalFeedbackDetailCreate | None
class opik.rest_api.types.NumericalFeedbackDefinitionPublic(*, details: NumericalFeedbackDetailPublic | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: NumericalFeedbackDetailPublic | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.NumericalFeedbackDefinitionUpdate(*, details: NumericalFeedbackDetailUpdate | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

details: NumericalFeedbackDetailUpdate | None
class opik.rest_api.types.NumericalFeedbackDetail(*, max: float, min: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

max: float
min: float
class opik.rest_api.types.NumericalFeedbackDetailCreate(*, max: float, min: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

max: float
min: float
class opik.rest_api.types.NumericalFeedbackDetailPublic(*, max: float, min: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

max: float
min: float
class opik.rest_api.types.NumericalFeedbackDetailUpdate(*, max: float, min: float, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

max: float
min: float
class opik.rest_api.types.Optimization(*, id: str | None = None, name: str | None = None, dataset_name: str, objective_name: str, status: Literal['running', 'completed', 'cancelled'] | Any, metadata: Dict[str, Any | None] | None = None, dataset_id: str | None = None, num_trials: int | None = None, feedback_scores: List[FeedbackScoreAverage] | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str | None
dataset_name: str
objective_name: str
status: Literal['running', 'completed', 'cancelled'] | Any
metadata: Dict[str, Any | None] | None
dataset_id: str | None
num_trials: int | None
feedback_scores: List[FeedbackScoreAverage] | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.OptimizationPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.optimization_public.OptimizationPublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945c55bb0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[OptimizationPublic] | None
sortable_by: FieldMetadata object at 0x7fa945c55bb0>]
class opik.rest_api.types.OptimizationPublic(*, id: str | None = None, name: str | None = None, dataset_name: str, objective_name: str, status: Literal['running', 'completed', 'cancelled'] | Any, metadata: Dict[str, Any | None] | None = None, dataset_id: str | None = None, num_trials: int | None = None, feedback_scores: List[FeedbackScoreAveragePublic] | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str | None
dataset_name: str
objective_name: str
status: Literal['running', 'completed', 'cancelled'] | Any
metadata: Dict[str, Any | None] | None
dataset_id: str | None
num_trials: int | None
feedback_scores: List[FeedbackScoreAveragePublic] | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.OptimizationWrite(*, id: str | None = None, name: str | None = None, dataset_name: str, objective_name: str, status: Literal['running', 'completed', 'cancelled'] | Any, metadata: Dict[str, Any | None] | None = None, last_updated_at: datetime | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str | None
dataset_name: str
objective_name: str
status: Literal['running', 'completed', 'cancelled'] | Any
metadata: Dict[str, Any | None] | None
last_updated_at: datetime | None
class opik.rest_api.types.PageColumns(*, columns: List[Column] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

columns: List[Column] | None
class opik.rest_api.types.PercentageValueStatPublic(*, value: PercentageValuesPublic | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

value: PercentageValuesPublic | None
class opik.rest_api.types.PercentageValues(*, p_50: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945d67f50>] = None, p_90: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945de04a0>] = None, p_99: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945de05c0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

p_50: FieldMetadata object at 0x7fa945d67f50>]
p_90: FieldMetadata object at 0x7fa945de04a0>]
p_99: FieldMetadata object at 0x7fa945de05c0>]
class opik.rest_api.types.PercentageValuesDetailed(*, p_50: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa946393e60>] = None, p_90: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ca7a10>] = None, p_99: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ca7d70>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

p_50: FieldMetadata object at 0x7fa946393e60>]
p_90: FieldMetadata object at 0x7fa945ca7a10>]
p_99: FieldMetadata object at 0x7fa945ca7d70>]
class opik.rest_api.types.PercentageValuesPublic(*, p_50: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945de33e0>] = None, p_90: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945de30b0>] = None, p_99: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945de35c0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

p_50: FieldMetadata object at 0x7fa945de33e0>]
p_90: FieldMetadata object at 0x7fa945de30b0>]
p_99: FieldMetadata object at 0x7fa945de35c0>]
class opik.rest_api.types.ProjectDetailed(*, id: str | None = None, name: str, visibility: Literal['private', 'public'] | Any | None = None, description: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, last_updated_trace_at: datetime | None = None, feedback_scores: List[FeedbackScoreAverageDetailed] | None = None, duration: PercentageValuesDetailed | None = None, total_estimated_cost: float | None = None, total_estimated_cost_sum: float | None = None, usage: Dict[str, float] | None = None, trace_count: int | None = None, guardrails_failed_count: int | None = None, error_count: ErrorCountWithDeviationDetailed | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str
visibility: Literal['private', 'public'] | Any | None
description: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
last_updated_trace_at: datetime | None
feedback_scores: List[FeedbackScoreAverageDetailed] | None
duration: PercentageValuesDetailed | None
total_estimated_cost: float | None
total_estimated_cost_sum: float | None
usage: Dict[str, float] | None
trace_count: int | None
guardrails_failed_count: int | None
error_count: ErrorCountWithDeviationDetailed | None
class opik.rest_api.types.ProjectMetricResponsePublic(*, project_id: str | None = None, metric_type: Literal['FEEDBACK_SCORES', 'TRACE_COUNT', 'TOKEN_USAGE', 'DURATION', 'COST', 'GUARDRAILS_FAILED_COUNT'] | Any | None = None, interval: Literal['HOURLY', 'DAILY', 'WEEKLY'] | Any | None = None, results: List[ResultsNumberPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

project_id: str | None
metric_type: Literal['FEEDBACK_SCORES', 'TRACE_COUNT', 'TOKEN_USAGE', 'DURATION', 'COST', 'GUARDRAILS_FAILED_COUNT'] | Any | None
interval: Literal['HOURLY', 'DAILY', 'WEEKLY'] | Any | None
results: List[ResultsNumberPublic] | None
class opik.rest_api.types.ProjectPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.project_public.ProjectPublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ca7fe0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[ProjectPublic] | None
sortable_by: FieldMetadata object at 0x7fa945ca7fe0>]
class opik.rest_api.types.ProjectPublic(*, id: str | None = None, name: str, visibility: Literal['private', 'public'] | Any | None = None, description: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, last_updated_trace_at: datetime | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str
visibility: Literal['private', 'public'] | Any | None
description: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
last_updated_trace_at: datetime | None
class opik.rest_api.types.ProjectStatItemObjectPublic_Avg(*, name: str | None = None, type: Literal['AVG'] = 'AVG', value: float | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['AVG']
value: Optional[float]
class opik.rest_api.types.ProjectStatItemObjectPublic_Count(*, name: str | None = None, type: Literal['COUNT'] = 'COUNT', value: int | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['COUNT']
value: Optional[int]
class opik.rest_api.types.ProjectStatItemObjectPublic_Percentage(*, name: str | None = None, type: Literal['PERCENTAGE'] = 'PERCENTAGE', value: PercentageValuesPublic | None = None, **extra_data: Any)

Bases: Base

model_config: ClassVar[pydantic.ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['PERCENTAGE']
value: Optional[PercentageValuesPublic]
class opik.rest_api.types.ProjectStatsPublic(*, stats: List[ProjectStatItemObjectPublic_Percentage | ProjectStatItemObjectPublic_Count | ProjectStatItemObjectPublic_Avg] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stats: List[ProjectStatItemObjectPublic_Percentage | ProjectStatItemObjectPublic_Count | ProjectStatItemObjectPublic_Avg] | None
class opik.rest_api.types.ProjectStatsSummary(*, content: List[ProjectStatsSummaryItem] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

content: List[ProjectStatsSummaryItem] | None
class opik.rest_api.types.ProjectStatsSummaryItem(*, project_id: str | None = None, feedback_scores: List[FeedbackScoreAverage] | None = None, duration: PercentageValues | None = None, total_estimated_cost: float | None = None, total_estimated_cost_sum: float | None = None, usage: Dict[str, float] | None = None, trace_count: int | None = None, guardrails_failed_count: int | None = None, error_count: ErrorCountWithDeviation | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

project_id: str | None
feedback_scores: List[FeedbackScoreAverage] | None
duration: PercentageValues | None
total_estimated_cost: float | None
total_estimated_cost_sum: float | None
usage: Dict[str, float] | None
trace_count: int | None
guardrails_failed_count: int | None
error_count: ErrorCountWithDeviation | None
class opik.rest_api.types.PromptDetail(*, id: str | None = None, name: str, description: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, version_count: int | None = None, latest_version: PromptVersionDetail | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str
description: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
version_count: int | None
latest_version: PromptVersionDetail | None
class opik.rest_api.types.PromptPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: List[PromptPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[PromptPublic] | None
class opik.rest_api.types.PromptPublic(*, id: str | None = None, name: str, description: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, version_count: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
name: str
description: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
version_count: int | None
class opik.rest_api.types.PromptTokensDetails(*, cached_tokens: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

cached_tokens: int | None
class opik.rest_api.types.PromptVersion(*, id: str | None = None, prompt_id: str | None = None, commit: str | None = None, template: str, metadata: Dict[str, Any | None] | None = None, type: Literal['mustache', 'jinja2'] | Any | None = None, change_description: str | None = None, variables: List[str] | None = None, created_at: datetime | None = None, created_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None

version unique identifier, generated if absent

prompt_id: str | None
commit: str | None

version short unique identifier, generated if absent. it must be 8 characters long

template: str
metadata: Dict[str, Any | None] | None
type: Literal['mustache', 'jinja2'] | Any | None
change_description: str | None
variables: List[str] | None
created_at: datetime | None
created_by: str | None
class opik.rest_api.types.PromptVersionDetail(*, id: str | None = None, prompt_id: str | None = None, commit: str | None = None, template: str, metadata: Dict[str, Any | None] | None = None, type: Literal['mustache', 'jinja2'] | Any | None = None, change_description: str | None = None, variables: List[str] | None = None, created_at: datetime | None = None, created_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None

version unique identifier, generated if absent

prompt_id: str | None
commit: str | None

version short unique identifier, generated if absent. it must be 8 characters long

template: str
metadata: Dict[str, Any | None] | None
type: Literal['mustache', 'jinja2'] | Any | None
change_description: str | None
variables: List[str] | None
created_at: datetime | None
created_by: str | None

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str
commit: str | None
prompt_id: str | None
class opik.rest_api.types.PromptVersionLinkPublic(*, id: str, commit: str | None = None, prompt_id: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str
commit: str | None
prompt_id: str | None
class opik.rest_api.types.PromptVersionLinkWrite(*, id: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str
class opik.rest_api.types.PromptVersionPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: List[PromptVersionPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[PromptVersionPublic] | None
class opik.rest_api.types.PromptVersionPublic(*, id: str | None = None, prompt_id: str | None = None, commit: str | None = None, template: str, metadata: Dict[str, Any | None] | None = None, type: Literal['mustache', 'jinja2'] | Any | None = None, change_description: str | None = None, created_at: datetime | None = None, created_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None

version unique identifier, generated if absent

prompt_id: str | None
commit: str | None

version short unique identifier, generated if absent. it must be 8 characters long

template: str
metadata: Dict[str, Any | None] | None
type: Literal['mustache', 'jinja2'] | Any | None
change_description: str | None
created_at: datetime | None
created_by: str | None
class opik.rest_api.types.ProviderApiKey(*, id: str | None = None, provider: Literal['openai', 'anthropic', 'gemini', 'openrouter', 'vertex-ai'] | Any, api_key: str, name: str | None = None, headers: Dict[str, str] | None = None, configuration: Dict[str, str] | None = None, base_url: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
provider: Literal['openai', 'anthropic', 'gemini', 'openrouter', 'vertex-ai'] | Any
api_key: str
name: str | None
headers: Dict[str, str] | None
configuration: Dict[str, str] | None
base_url: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.ProviderApiKeyPagePublic(*, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.provider_api_key_public.ProviderApiKeyPublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa9465946b0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

size: int | None
total: int | None
content: List[ProviderApiKeyPublic] | None
sortable_by: FieldMetadata object at 0x7fa9465946b0>]
class opik.rest_api.types.ProviderApiKeyPublic(*, id: str | None = None, provider: Literal['openai', 'anthropic', 'gemini', 'openrouter', 'vertex-ai'] | Any, api_key: str, name: str | None = None, headers: Dict[str, str] | None = None, configuration: Dict[str, str] | None = None, base_url: str | None = None, created_at: datetime | None = None, created_by: str | None = None, last_updated_at: datetime | None = None, last_updated_by: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
provider: Literal['openai', 'anthropic', 'gemini', 'openrouter', 'vertex-ai'] | Any
api_key: str
name: str | None
headers: Dict[str, str] | None
configuration: Dict[str, str] | None
base_url: str | None
created_at: datetime | None
created_by: str | None
last_updated_at: datetime | None
last_updated_by: str | None
class opik.rest_api.types.ResponseFormat(*, type: Literal['text', 'json_object', 'json_schema'] | Any | None = None, json_schema: JsonSchema | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['text', 'json_object', 'json_schema'] | Any | None
json_schema: JsonSchema | None
class opik.rest_api.types.Result(*, name: str | None = None, current: float | None = None, previous: float | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
current: float | None
previous: float | None
class opik.rest_api.types.ResultsNumberPublic(*, name: str | None = None, data: List[DataPointNumberPublic] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
data: List[DataPointNumberPublic] | None
class opik.rest_api.types.ScoreName(*, name: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None
class opik.rest_api.types.ServiceTogglesConfig(*, python_evaluator_enabled: ~typing.Annotated[bool, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945b0ff50>], guardrails_enabled: ~typing.Annotated[bool, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945b900e0>], **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

python_evaluator_enabled: FieldMetadata object at 0x7fa945b0ff50>]
guardrails_enabled: FieldMetadata object at 0x7fa945b900e0>]
class opik.rest_api.types.SpanBatch(*, spans: List[Span], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

spans: List[Span]
class opik.rest_api.types.SpanExperimentItemBulkWriteView(*, id: str | None = None, parent_span_id: str | None = None, name: str | None = None, type: Literal['general', 'tool', 'llm', 'guardrail'] | Any | None = None, start_time: datetime, end_time: datetime | None = None, input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, metadata: Dict[str, Any | None] | None = None, model: str | None = None, provider: str | None = None, tags: List[str] | None = None, usage: Dict[str, int] | None = None, error_info: ErrorInfoExperimentItemBulkWriteView | None = None, last_updated_at: datetime | None = None, total_estimated_cost: float | None = None, total_estimated_cost_version: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
parent_span_id: str | None
name: str | None
type: Literal['general', 'tool', 'llm', 'guardrail'] | Any | None
start_time: datetime
end_time: datetime | None
input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
metadata: Dict[str, Any | None] | None
model: str | None
provider: str | None
tags: List[str] | None
usage: Dict[str, int] | None
error_info: ErrorInfoExperimentItemBulkWriteView | None
last_updated_at: datetime | None
total_estimated_cost: float | None
total_estimated_cost_version: str | None
class opik.rest_api.types.SpanFilterPublic(*, field: str | None = None, operator: Literal['contains', 'not_contains', 'starts_with', 'ends_with', '=', '!=', '>', '>=', '<', '<=', 'is_empty', 'is_not_empty'] | Any | None = None, key: str | None = None, value: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

field: str | None
operator: Literal['contains', 'not_contains', 'starts_with', 'ends_with', '=', '!=', '>', '>=', '<', '<=', 'is_empty', 'is_not_empty'] | Any | None
key: str | None
value: str | None
class opik.rest_api.types.SpanPagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.span_public.SpanPublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945b0ddf0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[SpanPublic] | None
sortable_by: FieldMetadata object at 0x7fa945b0ddf0>]
class opik.rest_api.types.SpanWrite(*, id: str | None = None, project_name: str | None = None, trace_id: str | None = None, parent_span_id: str | None = None, name: str | None = None, type: Literal['general', 'tool', 'llm', 'guardrail'] | Any | None = None, start_time: datetime, end_time: datetime | None = None, input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, metadata: Dict[str, Any | None] | None = None, model: str | None = None, provider: str | None = None, tags: List[str] | None = None, usage: Dict[str, int] | None = None, error_info: ErrorInfoWrite | None = None, last_updated_at: datetime | None = None, total_estimated_cost: float | None = None, total_estimated_cost_version: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
project_name: str | None

If null, the default project is used

trace_id: str | None
parent_span_id: str | None
name: str | None
type: Literal['general', 'tool', 'llm', 'guardrail'] | Any | None
start_time: datetime
end_time: datetime | None
input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
metadata: Dict[str, Any | None] | None
model: str | None
provider: str | None
tags: List[str] | None
usage: Dict[str, int] | None
error_info: ErrorInfoWrite | None
last_updated_at: datetime | None
total_estimated_cost: float | None
total_estimated_cost_version: str | None
class opik.rest_api.types.SpansCountResponse(*, workspaces_spans_count: List[WorkspaceSpansCount] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

workspaces_spans_count: List[WorkspaceSpansCount] | None
class opik.rest_api.types.StartMultipartUploadResponse(*, upload_id: str, pre_sign_urls: List[str], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

upload_id: str
pre_sign_urls: List[str]
class opik.rest_api.types.StreamOptions(*, include_usage: bool | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

include_usage: bool | None
class opik.rest_api.types.Tool(*, type: Literal['function'] | None = None, function: Function | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['function'] | None
function: Function | None
class opik.rest_api.types.ToolCall(*, id: str | None = None, index: int | None = None, type: Literal['function'] | None = None, function: FunctionCall | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
index: int | None
type: Literal['function'] | None
function: FunctionCall | None
class opik.rest_api.types.TraceBatch(*, traces: List[Trace], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

traces: List[Trace]
class opik.rest_api.types.TraceCountResponse(*, workspaces_traces_count: List[WorkspaceTraceCount] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

workspaces_traces_count: List[WorkspaceTraceCount] | None
class opik.rest_api.types.TraceExperimentItemBulkWriteView(*, id: str | None = None, project_name: str | None = None, name: str | None = None, start_time: datetime, end_time: datetime | None = None, input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, metadata: Dict[str, Any | None] | None = None, tags: List[str] | None = None, error_info: ErrorInfoExperimentItemBulkWriteView | None = None, last_updated_at: datetime | None = None, thread_id: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

Please provide either none, only one of evaluate_task_result or trace, but never both

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
project_name: str | None

If null, the default project is used

name: str | None
start_time: datetime
end_time: datetime | None
input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
metadata: Dict[str, Any | None] | None
tags: List[str] | None
error_info: ErrorInfoExperimentItemBulkWriteView | None
last_updated_at: datetime | None
thread_id: str | None
class opik.rest_api.types.TraceFilterPublic(*, field: str | None = None, operator: Literal['contains', 'not_contains', 'starts_with', 'ends_with', '=', '!=', '>', '>=', '<', '<=', 'is_empty', 'is_not_empty'] | Any | None = None, key: str | None = None, value: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

field: str | None
operator: Literal['contains', 'not_contains', 'starts_with', 'ends_with', '=', '!=', '>', '>=', '<', '<=', 'is_empty', 'is_not_empty'] | Any | None
key: str | None
value: str | None
class opik.rest_api.types.TracePagePublic(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.trace_public.TracePublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945ef2e40>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[TracePublic] | None
sortable_by: FieldMetadata object at 0x7fa945ef2e40>]
class opik.rest_api.types.TraceThread(*, id: str | None = None, project_id: str | None = None, start_time: datetime | None = None, end_time: datetime | None = None, duration: float | None = None, first_message: Dict[str, Any | None] | None = None, last_message: Dict[str, Any | None] | None = None, number_of_messages: int | None = None, total_estimated_cost: float | None = None, usage: Dict[str, int] | None = None, last_updated_at: datetime | None = None, created_by: str | None = None, created_at: datetime | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
project_id: str | None
start_time: datetime | None
end_time: datetime | None
duration: float | None
first_message: Dict[str, Any | None] | None
last_message: Dict[str, Any | None] | None
number_of_messages: int | None
total_estimated_cost: float | None
usage: Dict[str, int] | None
last_updated_at: datetime | None
created_by: str | None
created_at: datetime | None
class opik.rest_api.types.TraceThreadIdentifier(*, project_name: str | None = None, project_id: str | None = None, thread_id: str, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

project_name: str | None
project_id: str | None
thread_id: str
class opik.rest_api.types.TraceThreadPage(*, page: int | None = None, size: int | None = None, total: int | None = None, content: ~typing.List[~opik.rest_api.types.trace_thread.TraceThread] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fa945b938c0>] = None, **extra_data: ~typing.Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page: int | None
size: int | None
total: int | None
content: List[TraceThread] | None
sortable_by: FieldMetadata object at 0x7fa945b938c0>]
class opik.rest_api.types.TraceWrite(*, id: str | None = None, project_name: str | None = None, name: str | None = None, start_time: datetime, end_time: datetime | None = None, input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, metadata: Dict[str, Any | None] | None = None, tags: List[str] | None = None, error_info: ErrorInfoWrite | None = None, last_updated_at: datetime | None = None, thread_id: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: str | None
project_name: str | None

If null, the default project is used

name: str | None
start_time: datetime
end_time: datetime | None
input: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
output: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
metadata: Dict[str, Any | None] | None
tags: List[str] | None
error_info: ErrorInfoWrite | None
last_updated_at: datetime | None
thread_id: str | None
class opik.rest_api.types.Usage(*, total_tokens: int | None = None, prompt_tokens: int | None = None, prompt_tokens_details: PromptTokensDetails | None = None, completion_tokens: int | None = None, completion_tokens_details: CompletionTokensDetails | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

total_tokens: int | None
prompt_tokens: int | None
prompt_tokens_details: PromptTokensDetails | None
completion_tokens: int | None
completion_tokens_details: CompletionTokensDetails | None
class opik.rest_api.types.UserDefinedMetricPythonCode(*, metric: str, arguments: Dict[str, str], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

metric: str
arguments: Dict[str, str]
class opik.rest_api.types.UserDefinedMetricPythonCodePublic(*, metric: str, arguments: Dict[str, str], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

metric: str
arguments: Dict[str, str]
class opik.rest_api.types.UserDefinedMetricPythonCodeWrite(*, metric: str, arguments: Dict[str, str], **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

metric: str
arguments: Dict[str, str]
class opik.rest_api.types.WorkspaceMetricsSummaryResponse(*, results: List[Result] | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

results: List[Result] | None
class opik.rest_api.types.WorkspaceNameHolder(*, workspace_name: str | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

workspace_name: str | None
class opik.rest_api.types.WorkspaceSpansCount(*, workspace: str | None = None, span_count: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

workspace: str | None
span_count: int | None
class opik.rest_api.types.WorkspaceTraceCount(*, workspace: str | None = None, trace_count: int | None = None, **extra_data: Any)

Bases: UniversalBaseModel

model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': True, 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

workspace: str | None
trace_count: int | None