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, reasoning_content: str | None = None, name: str | None = None, tool_calls: List[ToolCall] | None = None, refusal: str | 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
reasoning_content: str | None
name: str | None
tool_calls: List[ToolCall] | None
refusal: str | 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 0x7fddd482f6e0>] = 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 0x7fddd482f6e0>]
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, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', 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_TraceThreadLlmAsJudge(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', type: Literal['trace_thread_llm_as_judge'] = 'trace_thread_llm_as_judge', code: TraceThreadLlmAsJudgeCodePublic | 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['trace_thread_llm_as_judge']
code: Optional[TraceThreadLlmAsJudgeCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorObjectPublic_TraceThreadUserDefinedMetricPython(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', type: Literal['trace_thread_user_defined_metric_python'] = 'trace_thread_user_defined_metric_python', code: TraceThreadUserDefinedMetricPythonCodePublic | 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['trace_thread_user_defined_metric_python']
code: Optional[TraceThreadUserDefinedMetricPythonCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorObjectPublic_UserDefinedMetricPython(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', 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 | AutomationRuleEvaluatorObjectPublic_TraceThreadLlmAsJudge | AutomationRuleEvaluatorObjectPublic_TraceThreadUserDefinedMetricPython] | 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 | AutomationRuleEvaluatorObjectPublic_TraceThreadLlmAsJudge | AutomationRuleEvaluatorObjectPublic_TraceThreadUserDefinedMetricPython] | None
class opik.rest_api.types.AutomationRuleEvaluatorPublic_LlmAsJudge(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', 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_TraceThreadLlmAsJudge(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', type: Literal['trace_thread_llm_as_judge'] = 'trace_thread_llm_as_judge', code: TraceThreadLlmAsJudgeCodePublic | 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['trace_thread_llm_as_judge']
code: Optional[TraceThreadLlmAsJudgeCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorPublic_TraceThreadUserDefinedMetricPython(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', type: Literal['trace_thread_user_defined_metric_python'] = 'trace_thread_user_defined_metric_python', code: TraceThreadUserDefinedMetricPythonCodePublic | 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['trace_thread_user_defined_metric_python']
code: Optional[TraceThreadUserDefinedMetricPythonCodePublic]
class opik.rest_api.types.AutomationRuleEvaluatorPublic_UserDefinedMetricPython(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', 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.AutomationRuleEvaluatorTraceThreadLlmAsJudge(*, code: TraceThreadLlmAsJudgeCode | 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: TraceThreadLlmAsJudgeCode | None
class opik.rest_api.types.AutomationRuleEvaluatorTraceThreadLlmAsJudgePublic(*, code: TraceThreadLlmAsJudgeCodePublic | 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: TraceThreadLlmAsJudgeCodePublic | None
class opik.rest_api.types.AutomationRuleEvaluatorTraceThreadLlmAsJudgeWrite(*, code: TraceThreadLlmAsJudgeCodeWrite | 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: TraceThreadLlmAsJudgeCodeWrite | None
class opik.rest_api.types.AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython(*, code: TraceThreadUserDefinedMetricPythonCode | 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: TraceThreadUserDefinedMetricPythonCode | None
class opik.rest_api.types.AutomationRuleEvaluatorTraceThreadUserDefinedMetricPythonPublic(*, code: TraceThreadUserDefinedMetricPythonCodePublic | 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: TraceThreadUserDefinedMetricPythonCodePublic | None
class opik.rest_api.types.AutomationRuleEvaluatorTraceThreadUserDefinedMetricPythonWrite(*, code: TraceThreadUserDefinedMetricPythonCodeWrite | 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: TraceThreadUserDefinedMetricPythonCodeWrite | None
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.AutomationRuleEvaluatorUpdateTraceThreadLlmAsJudge(*, code: TraceThreadLlmAsJudgeCode | 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: TraceThreadLlmAsJudgeCode | None
class opik.rest_api.types.AutomationRuleEvaluatorUpdateTraceThreadUserDefinedMetricPython(*, code: TraceThreadUserDefinedMetricPythonCode | 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: TraceThreadUserDefinedMetricPythonCode | 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, enabled: bool | None = None, project_id: str, action: Literal['evaluator'] = 'evaluator', 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_TraceThreadLlmAsJudge(*, name: str, sampling_rate: float | None = None, enabled: bool | None = None, project_id: str, action: Literal['evaluator'] = 'evaluator', type: Literal['trace_thread_llm_as_judge'] = 'trace_thread_llm_as_judge', code: TraceThreadLlmAsJudgeCode | 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['trace_thread_llm_as_judge']
code: Optional[TraceThreadLlmAsJudgeCode]
class opik.rest_api.types.AutomationRuleEvaluatorUpdate_TraceThreadUserDefinedMetricPython(*, name: str, sampling_rate: float | None = None, enabled: bool | None = None, project_id: str, action: Literal['evaluator'] = 'evaluator', type: Literal['trace_thread_user_defined_metric_python'] = 'trace_thread_user_defined_metric_python', code: TraceThreadUserDefinedMetricPythonCode | 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['trace_thread_user_defined_metric_python']
code: Optional[TraceThreadUserDefinedMetricPythonCode]
class opik.rest_api.types.AutomationRuleEvaluatorUpdate_UserDefinedMetricPython(*, name: str, sampling_rate: float | None = None, enabled: bool | None = None, project_id: str, action: Literal['evaluator'] = 'evaluator', 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, name: str, sampling_rate: float | None = None, enabled: bool | None = None, action: Literal['evaluator'] = 'evaluator', 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_TraceThreadLlmAsJudge(*, project_id: str, name: str, sampling_rate: float | None = None, enabled: bool | None = None, action: Literal['evaluator'] = 'evaluator', type: Literal['trace_thread_llm_as_judge'] = 'trace_thread_llm_as_judge', code: TraceThreadLlmAsJudgeCodeWrite | 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['trace_thread_llm_as_judge']
code: Optional[TraceThreadLlmAsJudgeCodeWrite]
class opik.rest_api.types.AutomationRuleEvaluatorWrite_TraceThreadUserDefinedMetricPython(*, project_id: str, name: str, sampling_rate: float | None = None, enabled: bool | None = None, action: Literal['evaluator'] = 'evaluator', type: Literal['trace_thread_user_defined_metric_python'] = 'trace_thread_user_defined_metric_python', code: TraceThreadUserDefinedMetricPythonCodeWrite | 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['trace_thread_user_defined_metric_python']
code: Optional[TraceThreadUserDefinedMetricPythonCodeWrite]
class opik.rest_api.types.AutomationRuleEvaluatorWrite_UserDefinedMetricPython(*, project_id: str, name: str, sampling_rate: float | None = None, enabled: bool | None = None, action: Literal['evaluator'] = 'evaluator', 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, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', 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_TraceThreadLlmAsJudge(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', type: Literal['trace_thread_llm_as_judge'] = 'trace_thread_llm_as_judge', code: TraceThreadLlmAsJudgeCode | 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['trace_thread_llm_as_judge']
code: Optional[TraceThreadLlmAsJudgeCode]
class opik.rest_api.types.AutomationRuleEvaluator_TraceThreadUserDefinedMetricPython(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', type: Literal['trace_thread_user_defined_metric_python'] = 'trace_thread_user_defined_metric_python', code: TraceThreadUserDefinedMetricPythonCode | 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['trace_thread_user_defined_metric_python']
code: Optional[TraceThreadUserDefinedMetricPythonCode]
class opik.rest_api.types.AutomationRuleEvaluator_UserDefinedMetricPython(*, id: str | None = None, project_id: str, project_name: str | None = None, name: str, sampling_rate: float | None = None, enabled: bool | 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'] = 'evaluator', 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.BatchDeleteByProject(*, ids: List[str], project_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].

ids: List[str]
project_id: str | None
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 0x7fddd3d92ff0>] = 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 0x7fddd3d92ff0>]
class opik.rest_api.types.ChunkedOutputJsonNodeType(*, type_name: ~typing.Annotated[str | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3c734a0>] = 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 0x7fddd3c734a0>]
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 0x7fddd3c738c0>] = 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 0x7fddd3c738c0>]

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 0x7fddd3ed58e0>] = 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 0x7fddd3ed58e0>]

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 0x7fddd3df3d10>] = 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 0x7fddd3df3d10>]

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.DataPointDouble(*, 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.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: ~typing.List[~opik.rest_api.types.dataset_public.DatasetPublic] | None = None, page: int | None = None, size: int | None = None, total: int | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3c73e00>] = 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].

content: List[DatasetPublic] | None
page: int | None
size: int | None
total: int | None
sortable_by: FieldMetadata object at 0x7fddd3c73e00>]
class opik.rest_api.types.DatasetPublic(*, id: str | None = None, name: str, visibility: Literal['private', 'public'] | Any | None = None, tags: List[str] | 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
tags: List[str] | 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, reasoning_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
reasoning_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.ExperimentGroupResponse(*, content: Dict[str, GroupContent] | 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: Dict[str, GroupContent] | 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 0x7fddd3df3dd0>] = 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 0x7fddd3df3dd0>]
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.FeedbackScoreBatchItemThread(*, thread_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].

thread_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.GroupContent(*, label: 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].

label: 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 0x7fddd3b57b00>] = 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 0x7fddd3b57b00>]
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 0x7fddd3d91130>], **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 0x7fddd3d91130>]
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 0x7fddd59a2bd0>], **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 0x7fddd59a2bd0>]
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 0x7fddd3fbbda0>], **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 0x7fddd3fbbda0>]
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 0x7fddd3a33c80>] = 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 0x7fddd3a33c80>]
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 0x7fddd3b56000>] = None, p_90: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3b56120>] = None, p_99: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3b56240>] = 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 0x7fddd3b56000>]
p_90: FieldMetadata object at 0x7fddd3b56120>]
p_99: FieldMetadata object at 0x7fddd3b56240>]
class opik.rest_api.types.PercentageValuesDetailed(*, p_50: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3c729c0>] = None, p_90: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3a8db20>] = None, p_99: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3a8de80>] = 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 0x7fddd3c729c0>]
p_90: FieldMetadata object at 0x7fddd3a8db20>]
p_99: FieldMetadata object at 0x7fddd3a8de80>]
class opik.rest_api.types.PercentageValuesPublic(*, p_50: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3bb5250>] = None, p_90: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3bb50d0>] = None, p_99: ~typing.Annotated[float | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3bb5160>] = 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 0x7fddd3bb5250>]
p_90: FieldMetadata object at 0x7fddd3bb50d0>]
p_99: FieldMetadata object at 0x7fddd3bb5160>]
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', 'THREAD_COUNT', 'THREAD_DURATION', 'THREAD_FEEDBACK_SCORES'] | 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', 'THREAD_COUNT', 'THREAD_DURATION', 'THREAD_FEEDBACK_SCORES'] | 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 0x7fddd3a32a80>] = 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 0x7fddd3a32a80>]
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, tags: List[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
tags: List[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: ~typing.List[~opik.rest_api.types.prompt_public.PromptPublic] | None = None, sortable_by: ~typing.Annotated[~typing.List[str] | None, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3bb5b50>] = 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[PromptPublic] | None
sortable_by: FieldMetadata object at 0x7fddd3bb5b50>]
class opik.rest_api.types.PromptPublic(*, id: str | None = None, name: str, description: str | None = None, tags: List[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
tags: List[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', 'custom-llm'] | Any, api_key: str | None = None, 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', 'custom-llm'] | Any
api_key: str | None
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 0x7fddd3a8ea50>] = 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 0x7fddd3a8ea50>]
class opik.rest_api.types.ProviderApiKeyPublic(*, id: str | None = None, provider: Literal['openai', 'anthropic', 'gemini', 'openrouter', 'vertex-ai', 'custom-llm'] | Any, api_key: str | None = None, 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', 'custom-llm'] | Any
api_key: str | None
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 0x7fddd3aee5a0>], trace_thread_python_evaluator_enabled: ~typing.Annotated[bool, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3aee720>], guardrails_enabled: ~typing.Annotated[bool, <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3aee8d0>], **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 0x7fddd3aee5a0>]
trace_thread_python_evaluator_enabled: FieldMetadata object at 0x7fddd3aee720>]
guardrails_enabled: FieldMetadata object at 0x7fddd3aee8d0>]
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 0x7fddd5d8ed20>] = 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 0x7fddd5d8ed20>]
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 0x7fddd3c71e20>] = 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 0x7fddd3c71e20>]
class opik.rest_api.types.TraceThread(*, id: str | None = None, project_id: str | None = None, thread_model_id: str | None = None, start_time: datetime | None = None, end_time: datetime | None = None, duration: float | None = None, first_message: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, last_message: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None = None, feedback_scores: List[FeedbackScore] | None = None, status: Literal['active', 'inactive'] | Any | None = None, number_of_messages: int | None = None, total_estimated_cost: float | None = None, usage: Dict[str, int] | None = None, comments: List[Comment] | None = None, tags: List[str] | None = None, last_updated_at: datetime | None = None, last_updated_by: str | 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
thread_model_id: str | None
start_time: datetime | None
end_time: datetime | None
duration: float | None
first_message: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
last_message: Dict[str, Any | None] | List[Dict[str, Any | None]] | str | None
feedback_scores: List[FeedbackScore] | None
status: Literal['active', 'inactive'] | Any | None
number_of_messages: int | None
total_estimated_cost: float | None
usage: Dict[str, int] | None
comments: List[Comment] | None
tags: List[str] | None
last_updated_at: datetime | None
last_updated_by: str | None
created_by: str | None
created_at: datetime | None
class opik.rest_api.types.TraceThreadFilter(*, 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.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.TraceThreadLlmAsJudgeCode(*, model: ~opik.rest_api.types.llm_as_judge_model_parameters.LlmAsJudgeModelParameters, messages: ~typing.List[~opik.rest_api.types.llm_as_judge_message.LlmAsJudgeMessage], schema_: ~typing.Annotated[~typing.List[~opik.rest_api.types.llm_as_judge_output_schema.LlmAsJudgeOutputSchema], <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3d918e0>], **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]
schema_: FieldMetadata object at 0x7fddd3d918e0>]
class opik.rest_api.types.TraceThreadLlmAsJudgeCodePublic(*, 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], schema_: ~typing.Annotated[~typing.List[~opik.rest_api.types.llm_as_judge_output_schema_public.LlmAsJudgeOutputSchemaPublic], <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3df0530>], **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]
schema_: FieldMetadata object at 0x7fddd3df0530>]
class opik.rest_api.types.TraceThreadLlmAsJudgeCodeWrite(*, 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], schema_: ~typing.Annotated[~typing.List[~opik.rest_api.types.llm_as_judge_output_schema_write.LlmAsJudgeOutputSchemaWrite], <opik.rest_api.core.serialization.FieldMetadata object at 0x7fddd3df2720>], **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]
schema_: FieldMetadata object at 0x7fddd3df2720>]
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 0x7fddd3a33f80>] = 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 0x7fddd3a33f80>]
class opik.rest_api.types.TraceThreadUpdate(*, tags: 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].

tags: List[str] | None
class opik.rest_api.types.TraceThreadUserDefinedMetricPythonCode(*, metric: 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
class opik.rest_api.types.TraceThreadUserDefinedMetricPythonCodePublic(*, metric: 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
class opik.rest_api.types.TraceThreadUserDefinedMetricPythonCodeWrite(*, metric: 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
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.WorkspaceConfiguration(*, timeout_to_mark_thread_as_inactive: 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].

timeout_to_mark_thread_as_inactive: str | None

Duration in ISO-8601 format (e.g., PT30M for 30 minutes, PT2H for 2 hours, P1D for 1 day). Minimum precision supported is seconds, please use a duration with seconds precision or higher. Also, the max duration allowed is 7 days.

class opik.rest_api.types.WorkspaceMetricRequest(*, project_ids: List[str] | None = None, name: str | None = None, interval_start: datetime, interval_end: datetime, start_before_end: 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].

project_ids: List[str] | None
name: str | None
interval_start: datetime
interval_end: datetime
start_before_end: bool | None
class opik.rest_api.types.WorkspaceMetricResponse(*, 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.WorkspaceMetricsSummaryRequest(*, project_ids: List[str] | None = None, interval_start: datetime, interval_end: datetime, start_before_end: 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].

project_ids: List[str] | None
interval_start: datetime
interval_end: datetime
start_before_end: bool | None
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