openapi: 3.1.0 info: title: Opik REST API description: "The Opik REST API is currently in beta and subject to change. If you\ \ have any questions or feedback about the APIs, please reach out on GitHub: https://github.com/comet-ml/opik.\n\ \nAll of the methods listed in this documentation are used by either the SDK or\ \ the UI to interact with the Opik server. As a result,\nthe methods have been\ \ optimized for these use-cases in mind. If you are looking for a method that\ \ is not listed above, please create\nand issue on GitHub or raise a PR!\n\nOpik\ \ includes two main deployment options that results in slightly different API\ \ usage:\n\n- **Self-hosted Opik instance:** You will simply need to specify the\ \ URL as `http://localhost:5173/api/` or similar. This is the default\ \ option for the docs.\n- **Opik Cloud:** You will need to specify the Opik API\ \ Key and Opik Workspace in the header. The format of the header should be:\n\n\ \ ```\n {\n \"Comet-Workspace\": \"your-workspace-name\",\n \"authorization\"\ : \"your-api-key\"\n }\n ```\n\n The full payload would therefore look like:\n\ \ \n ```\n curl -X GET 'https://www.comet.com/opik/api/v1/private/projects'\ \ \\\n -H 'Accept: application/json' \\\n -H 'Comet-Workspace: '\ \ \\\n -H 'authorization: '\n ```\n\n Do take note here that\ \ the authorization header value does not include the `Bearer ` prefix. To switch\ \ to using the Opik Cloud in the documentation, you can\n click on the edit button\ \ displayed when hovering over the `Base URL` displayed on the right hand side\ \ of the docs.\n" contact: name: Github Repository url: https://github.com/comet-ml/opik license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html version: 1.0.0 servers: - url: http://localhost:5173/api description: Local server - url: https://www.comet.com/opik/api description: Opik Cloud tags: - name: System usage description: System usage related resource - name: Agent Configs description: Agent configuration management - name: Alerts description: Alert resources - name: Annotation Queues description: Private annotation queue operations - name: Assistant Sidebars description: Assistant Sidebar configuration - name: Attachments description: Attachments related resources - name: Check description: Access check resources - name: Automation rule evaluators description: Automation rule evaluators resource - name: Chat Completions description: Chat Completions related resources - name: Dashboards description: Workspace Dashboard resources - name: Datasets description: Dataset resources - name: Experiments description: Experiment resources - name: Feedback-definitions description: Feedback definitions related resources - name: Guardrails description: Guardrails related resources - name: Insights Views description: Insights View resources - name: LLM Models description: LLM model registry resources - name: LlmProviderKey description: LLM Provider Key - name: Runners description: Local runner management endpoints - name: Manual Evaluation description: "Manual evaluation resources for traces, threads, and spans" - name: Ollama description: Ollama provider configuration endpoints with OpenAI-compatible API support. - name: Ollie State description: Ollie pod state persistence - name: OpenTelemetry Ingestion description: Resource to ingest Traces and Spans via OpenTelemetry - name: Optimizations description: Optimization resources - name: Projects description: Project related resources - name: Prompts description: Prompt resources - name: Retention Rules description: Data retention rule management - name: Service Toggles description: Service Toggles resources - name: Spans description: Span related resources - name: Traces description: Trace related resources - name: Welcome Wizard description: Welcome wizard tracking resources - name: Workspace permissions description: Workspace permissions related resources - name: Workspaces description: Workspace related resources - name: Redirect description: Redirects for SDK generated links paths: /v1/internal/usage/bi-datasets: get: tags: - System usage summary: Get datasets information for BI events description: Get datasets information for BI events per user per workspace operationId: getDatasetBiInfo responses: "200": description: Datasets BiInformationResponse resource content: application/json: schema: $ref: "#/components/schemas/BiInformationResponse" /v1/internal/usage/bi-experiments: get: tags: - System usage summary: Get experiments information for BI events description: Get experiments information for BI events per user per workspace operationId: getExperimentBiInfo responses: "200": description: Experiments BiInformationResponse resource content: application/json: schema: $ref: "#/components/schemas/BiInformationResponse" /v1/internal/usage/bi-spans: get: tags: - System usage summary: Get spans information for BI events description: Get spans information for BI events per user per workspace operationId: getSpansBiInfo responses: "200": description: Spans BiInformationResponse resource content: application/json: schema: $ref: "#/components/schemas/BiInformationResponse" /v1/internal/usage/workspace-span-counts: get: tags: - System usage summary: Get spans count on previous day for all available workspaces description: Get spans count on previous day for all available workspaces operationId: getSpansCountForWorkspaces responses: "200": description: SpanCountResponse resource content: application/json: schema: $ref: "#/components/schemas/SpansCountResponse" /v1/internal/usage/bi-traces: get: tags: - System usage summary: Get traces information for BI events description: Get traces information for BI events per user per workspace operationId: getTracesBiInfo responses: "200": description: Traces BiInformationResponse resource content: application/json: schema: $ref: "#/components/schemas/BiInformationResponse" /v1/internal/usage/workspace-trace-counts: get: tags: - System usage summary: Get traces count on previous day for all available workspaces description: Get traces count on previous day for all available workspaces operationId: getTracesCountForWorkspaces responses: "200": description: TraceCountResponse resource content: application/json: schema: $ref: "#/components/schemas/TraceCountResponse" /v1/private/agent-configs/blueprints: post: tags: - Agent Configs summary: Create optimizer config with initial blueprint description: Creates a new optimizer config with initial blueprint. Fails if the project already has a config. operationId: createAgentConfig requestBody: content: application/json: schema: $ref: "#/components/schemas/AgentConfigCreate_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}" "400": description: Bad Request (e.g. MASK type not allowed) content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Write" "409": description: Conflict (config already exists) content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Write" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Write" patch: tags: - Agent Configs summary: Add blueprint to existing config description: Adds a new blueprint to an existing optimizer config. Fails if the project has no config yet. operationId: updateAgentConfig requestBody: content: application/json: schema: $ref: "#/components/schemas/AgentConfigCreate_Write" responses: "204": description: Blueprint added headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}" "404": description: Not Found (no config for project) content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Write" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Write" /v1/private/agent-configs/blueprints/environments: post: tags: - Agent Configs summary: Create or update environments description: Creates or updates environment-to-blueprint mappings operationId: createOrUpdateEnvs requestBody: content: application/json: schema: $ref: "#/components/schemas/AgentConfigEnvUpdate" responses: "204": description: Environments updated "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/agent-configs/blueprints/environments/{env_name}/projects/{project_id}: get: tags: - Agent Configs summary: Retrieve blueprint by environment description: Retrieves the blueprint associated with a specific environment operationId: getBlueprintByEnv parameters: - name: env_name in: path required: true schema: type: string - name: project_id in: path required: true schema: type: string format: uuid - name: mask_id in: query schema: type: string format: uuid responses: "200": description: Blueprint retrieved content: application/json: schema: $ref: "#/components/schemas/AgentBlueprint_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" put: tags: - Agent Configs summary: Set environment by blueprint name description: Sets an environment to point to a blueprint identified by name operationId: setEnvByBlueprintName parameters: - name: env_name in: path required: true schema: type: string - name: project_id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/AgentConfigEnvSetByName" responses: "204": description: Environment updated "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" delete: tags: - Agent Configs summary: Delete environment description: Soft-deletes an environment by setting its ended_at timestamp operationId: deleteEnv parameters: - name: env_name in: path required: true schema: type: string - name: project_id in: path required: true schema: type: string format: uuid responses: "204": description: Environment deleted "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/agent-configs/blueprints/{blueprint_id}: get: tags: - Agent Configs summary: Retrieve blueprint by ID description: Retrieves a specific blueprint by its ID operationId: getBlueprintById parameters: - name: blueprint_id in: path required: true schema: type: string format: uuid - name: mask_id in: query schema: type: string format: uuid responses: "200": description: Blueprint retrieved content: application/json: schema: $ref: "#/components/schemas/AgentBlueprint_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/agent-configs/blueprints/projects/{project_id}/names/{name}: get: tags: - Agent Configs summary: Retrieve blueprint by name description: Retrieves a specific blueprint by its name within a project operationId: getBlueprintByName parameters: - name: name in: path required: true schema: type: string - name: project_id in: path required: true schema: type: string format: uuid - name: mask_id in: query schema: type: string format: uuid responses: "200": description: Blueprint retrieved content: application/json: schema: $ref: "#/components/schemas/AgentBlueprint_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/agent-configs/blueprints/history/projects/{project_id}: get: tags: - Agent Configs summary: Get blueprint history description: Retrieves paginated blueprint history for a project operationId: getBlueprintHistory parameters: - name: project_id in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 responses: "200": description: History retrieved content: application/json: schema: $ref: "#/components/schemas/BlueprintPage_History" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_History" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_History" /v1/private/agent-configs/blueprints/{blueprint_id}/deltas: get: tags: - Agent Configs summary: Retrieve delta by blueprint ID description: Retrieves only the changes (delta) introduced in a specific blueprint operationId: getDeltaById parameters: - name: blueprint_id in: path required: true schema: type: string format: uuid responses: "200": description: Delta retrieved content: application/json: schema: $ref: "#/components/schemas/AgentBlueprint_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/agent-configs/blueprints/latest/projects/{project_id}: get: tags: - Agent Configs summary: Retrieve latest blueprint description: Retrieves the latest blueprint for a project operationId: getLatestBlueprint parameters: - name: project_id in: path required: true schema: type: string format: uuid - name: mask_id in: query schema: type: string format: uuid responses: "200": description: Blueprint retrieved content: application/json: schema: $ref: "#/components/schemas/AgentBlueprint_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/alerts: get: tags: - Alerts summary: Find alerts description: Find alerts operationId: findAlerts parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/AlertPage_Public" post: tags: - Alerts summary: Create alert description: Create alert operationId: createAlert requestBody: content: application/json: schema: $ref: "#/components/schemas/Alert_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/alerts/{alertId}" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/alerts/delete: post: tags: - Alerts summary: Delete alert batch description: Delete multiple alerts by their IDs operationId: deleteAlertBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/alerts/{id}: get: tags: - Alerts summary: Get Alert by id description: Get Alert by id operationId: getAlertById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Alert resource content: application/json: schema: $ref: "#/components/schemas/Alert_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" put: tags: - Alerts summary: Update alert description: Update alert operationId: updateAlert parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Alert_Write" responses: "204": description: No Content "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/alerts/webhooks/examples: get: tags: - Alerts summary: Get webhook payload examples description: "Get webhook payload examples for all alert event types, optionally\ \ filtered by alert type" operationId: getWebhookExamples parameters: - name: alert_type in: query schema: type: string enum: - general - slack - pagerduty responses: "200": description: Webhook examples content: application/json: schema: $ref: "#/components/schemas/WebhookExamples" /v1/private/alerts/webhooks/tests: post: tags: - Alerts summary: Test alert webhook description: Test alert webhook operationId: testWebhook requestBody: content: application/json: schema: $ref: "#/components/schemas/Alert_Write" responses: "200": description: Webhook test content: application/json: schema: $ref: "#/components/schemas/WebhookTestResult" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/annotation-queues/{id}/items/add: post: tags: - Annotation Queues summary: Add items to annotation queue description: Add traces or threads to annotation queue operationId: addItemsToAnnotationQueue parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/AnnotationQueueItemIds" responses: "204": description: No content "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/annotation-queues: get: tags: - Annotation Queues summary: Find annotation queues description: Find annotation queues with filtering and sorting operationId: findAnnotationQueues parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter annotation queues by name (partial match, case insensitive)" - name: filters in: query schema: type: string - name: sorting in: query schema: type: string responses: "200": description: Annotation queues page content: application/json: schema: $ref: "#/components/schemas/AnnotationQueuePage_Public" post: tags: - Annotation Queues summary: Create annotation queue description: Create annotation queue for human annotation workflows operationId: createAnnotationQueue requestBody: content: application/json: schema: $ref: "#/components/schemas/AnnotationQueue_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/traces/{annotationId}" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/annotation-queues/batch: post: tags: - Annotation Queues summary: Create annotation queue batch description: Create multiple annotation queues for human annotation workflows operationId: createAnnotationQueueBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/AnnotationQueueBatch_Write" responses: "204": description: No Content "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/annotation-queues/delete: post: tags: - Annotation Queues summary: Delete annotation queue batch description: Delete multiple annotation queues by their IDs operationId: deleteAnnotationQueueBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/annotation-queues/{id}: get: tags: - Annotation Queues summary: Get annotation queue by id description: Get annotation queue by id operationId: getAnnotationQueueById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Annotation queue resource content: application/json: schema: $ref: "#/components/schemas/AnnotationQueue_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" patch: tags: - Annotation Queues summary: Update annotation queue description: Update annotation queue by id operationId: updateAnnotationQueue parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/AnnotationQueueUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/annotation-queues/{id}/items/delete: post: tags: - Annotation Queues summary: Remove items from annotation queue description: Remove items from annotation queue operationId: removeItemsFromAnnotationQueue parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/AnnotationQueueItemIds" responses: "204": description: No content "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/assistant-sidebars/config: get: tags: - Assistant Sidebars summary: Get Assistant Sidebar configuration description: Get CDN configuration for loading the assistant sidebar at runtime operationId: getAssistantSidebarConfig responses: "200": description: Assistant Sidebar config content: application/json: schema: $ref: "#/components/schemas/AssistantSidebarConfigResponse" /v1/private/attachment/list: get: tags: - Attachments summary: Attachments list for entity description: Attachments list for entity operationId: attachmentList parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 100 - name: project_id in: query required: true schema: type: string format: uuid - name: entity_type in: query required: true schema: type: string enum: - trace - span - name: entity_id in: query required: true schema: type: string format: uuid - name: path in: query required: true schema: minLength: 1 type: string responses: "200": description: Attachment Resource content: application/json: schema: $ref: "#/components/schemas/AttachmentPage" "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/attachment/upload-complete: post: tags: - Attachments summary: Complete multipart attachment upload description: Complete multipart attachment upload operationId: completeMultiPartUpload requestBody: content: application/json: schema: $ref: "#/components/schemas/CompleteMultipartUploadRequest" responses: "204": description: No content "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/attachment/delete: post: tags: - Attachments summary: Delete attachments description: Delete attachments operationId: deleteAttachments requestBody: content: application/json: schema: $ref: "#/components/schemas/CompleteMultipartUploadRequest" responses: "204": description: No content "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/attachment/download: get: tags: - Attachments summary: Download attachment from MinIO description: Download attachment from MinIO operationId: downloadAttachment parameters: - name: workspace_name in: query schema: type: string - name: container_id in: query required: true schema: type: string format: uuid - name: entity_type in: query required: true schema: type: string enum: - trace - span - name: entity_id in: query required: true schema: type: string format: uuid - name: file_name in: query required: true schema: minLength: 1 type: string - name: mime_type in: query required: true schema: minLength: 1 type: string responses: "200": description: Attachment Resource content: '*/*': schema: type: string format: binary "401": description: Bad Request content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/attachment/upload-start: post: tags: - Attachments summary: Start multipart attachment upload description: Start multipart attachment upload operationId: startMultiPartUpload requestBody: content: application/json: schema: $ref: "#/components/schemas/StartMultipartUploadRequest" responses: "200": description: MultipartUploadResponse content: application/json: schema: $ref: "#/components/schemas/StartMultipartUploadResponse" "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/attachment/upload: put: tags: - Attachments summary: Upload attachment to MinIO description: Upload attachment to MinIO operationId: uploadAttachment parameters: - name: file_name in: query required: true schema: type: string - name: project_name in: query schema: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" - name: mime_type in: query schema: type: string - name: entity_type in: query required: true schema: type: string enum: - trace - span - name: entity_id in: query required: true schema: type: string format: uuid requestBody: content: '*/*': schema: type: object responses: "204": description: No content "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/auth: post: tags: - Check summary: Check user access to workspace description: Check user access to workspace operationId: checkAccess requestBody: content: application/json: schema: $ref: "#/components/schemas/AuthDetailsHolder" responses: "204": description: No Content "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/auth/workspace: get: tags: - Check summary: User's default workspace name description: User's default workspace name operationId: getWorkspaceName responses: "200": description: Authentication resource content: application/json: schema: $ref: "#/components/schemas/WorkspaceNameHolder" "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/automations/evaluators: get: tags: - Automation rule evaluators summary: Find project Evaluators description: Find project Evaluators operationId: findEvaluators parameters: - name: project_id in: query schema: type: string format: uuid - name: id in: query schema: type: string description: "Filter automation rules with rule ID containing this value\ \ (partial match, like %id%)" - name: name in: query schema: type: string description: "Filter automation rule evaluators by name (partial match,\ \ case insensitive)" - name: filters in: query schema: type: string - name: sorting in: query schema: type: string - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 responses: "200": description: Evaluators resource content: application/json: schema: $ref: "#/components/schemas/AutomationRuleEvaluatorPage_Public" post: tags: - Automation rule evaluators summary: Create automation rule evaluator description: Create automation rule evaluator operationId: createAutomationRuleEvaluator requestBody: content: application/json: schema: $ref: "#/components/schemas/AutomationRuleEvaluator_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/automations/evaluators/{evaluatorId}" /v1/private/automations/evaluators/delete: post: tags: - Automation rule evaluators summary: Delete automation rule evaluators description: Delete automation rule evaluators batch operationId: deleteAutomationRuleEvaluatorBatch parameters: - name: project_id in: query schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/automations/evaluators/{id}: get: tags: - Automation rule evaluators summary: Get automation rule evaluator by id description: Get automation rule by id operationId: getEvaluatorById parameters: - name: project_id in: query schema: type: string format: uuid - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Automation Rule resource content: application/json: schema: $ref: "#/components/schemas/AutomationRuleEvaluator_Public" patch: tags: - Automation rule evaluators summary: Update Automation Rule Evaluator by id description: Update Automation Rule Evaluator by id operationId: updateAutomationRuleEvaluator parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" responses: "204": description: No content /v1/private/automations/evaluators/{id}/logs: get: tags: - Automation rule evaluators summary: Get automation rule evaluator logs by id description: Get automation rule evaluator logs by id operationId: getEvaluatorLogsById parameters: - name: id in: path required: true schema: type: string format: uuid - name: size in: query schema: minimum: 1 type: integer format: int32 default: 1000 responses: "200": description: Automation rule evaluator logs resource content: application/json: schema: $ref: "#/components/schemas/LogPage" /v1/private/chat/completions: post: tags: - Chat Completions summary: Create chat completions description: Create chat completions operationId: createChatCompletions requestBody: content: application/json: schema: $ref: "#/components/schemas/ChatCompletionRequest" responses: "200": description: Chat completions response content: text/event-stream: schema: type: array items: type: object anyOf: - $ref: "#/components/schemas/ChatCompletionResponse" - $ref: "#/components/schemas/ErrorMessage" application/json: schema: $ref: "#/components/schemas/ChatCompletionResponse" /v1/private/dashboards: get: tags: - Dashboards summary: Find dashboards description: Find dashboards in a workspace operationId: findDashboards parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter dashboards by name (partial match, case insensitive)" - name: project_id in: query schema: type: string format: uuid - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: Dashboard page content: application/json: schema: $ref: "#/components/schemas/DashboardPage_Public" post: tags: - Dashboards summary: Create dashboard description: Create a new dashboard in a workspace operationId: createDashboard requestBody: content: application/json: schema: $ref: "#/components/schemas/Dashboard_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/dashboards/{dashboardId}" content: application/json: schema: $ref: "#/components/schemas/Dashboard_Public" /v1/private/dashboards/{dashboardId}: get: tags: - Dashboards summary: Get dashboard by id description: Get dashboard by id operationId: getDashboardById parameters: - name: dashboardId in: path required: true schema: type: string format: uuid responses: "200": description: Dashboard resource content: application/json: schema: $ref: "#/components/schemas/Dashboard_Public" "404": description: Dashboard not found delete: tags: - Dashboards summary: Delete dashboard description: Delete dashboard by id operationId: deleteDashboard parameters: - name: dashboardId in: path required: true schema: type: string format: uuid responses: "204": description: No content patch: tags: - Dashboards summary: Update dashboard description: Update dashboard by id. Partial updates are supported - only provided fields will be updated. operationId: updateDashboard parameters: - name: dashboardId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DashboardUpdate_Public" responses: "200": description: Updated dashboard content: application/json: schema: $ref: "#/components/schemas/Dashboard_Public" "404": description: Dashboard not found "409": description: Conflict - dashboard with this name already exists /v1/private/dashboards/delete-batch: post: tags: - Dashboards summary: Delete dashboards description: Delete dashboards batch operationId: deleteDashboardsBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No content /v1/private/datasets/{id}/items/changes: post: tags: - Datasets summary: Apply changes to dataset items description: | Apply delta changes (add, edit, delete) to a dataset version with conflict detection. This endpoint: - Creates a new version with the applied changes - Validates that baseVersion matches the latest version (unless override=true) - Returns 409 Conflict if baseVersion is stale and override is not set Use `override=true` query parameter to force version creation even with stale baseVersion. operationId: applyDatasetItemChanges parameters: - name: id in: path required: true schema: type: string format: uuid - name: override in: query schema: type: boolean default: false requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetItemChanges_Public" responses: "201": description: Version created successfully content: application/json: schema: $ref: "#/components/schemas/DatasetVersion_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "404": description: Dataset or version not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "409": description: Version conflict - baseVersion is not the latest content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/datasets/items/batch: patch: tags: - Datasets summary: Batch update dataset items description: Update multiple dataset items operationId: batchUpdateDatasetItems requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetItemBatchUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/datasets: get: tags: - Datasets summary: Find datasets description: Find datasets operationId: findDatasets parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: with_experiments_only in: query schema: type: boolean - name: with_optimizations_only in: query schema: type: boolean - name: prompt_id in: query schema: type: string format: uuid - name: project_id in: query schema: type: string format: uuid - name: name in: query schema: type: string description: "Filter datasets by name (partial match, case insensitive)" - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: Dataset resource content: application/json: schema: $ref: "#/components/schemas/DatasetPage_Public" post: tags: - Datasets summary: Create dataset description: Create dataset operationId: createDataset requestBody: content: application/json: schema: $ref: "#/components/schemas/Dataset_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/api/v1/private/datasets/{id}" /v1/private/datasets/items: put: tags: - Datasets summary: Create/update dataset items description: |- Create/update dataset items based on dataset item id. Each item's 'id' field is the stable identifier and upsert key. Provide it to update an existing item, or omit it to create a new one. operationId: createOrUpdateDatasetItems requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetItemBatch_Write" responses: "204": description: No content /v1/private/datasets/items/from-csv: post: tags: - Datasets summary: Create dataset items from CSV file description: Create dataset items from uploaded CSV file. CSV should have headers in the first row. Processing happens asynchronously in batches. operationId: createDatasetItemsFromCsv requestBody: content: multipart/form-data: schema: required: - dataset_id - file type: object properties: file: type: object dataset_id: type: string format: uuid responses: "202": description: Accepted - CSV processing started "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found - CSV upload feature is disabled content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/datasets/{dataset_id}/items/from-spans: post: tags: - Datasets summary: Create dataset items from spans description: Create dataset items from spans with enriched metadata operationId: createDatasetItemsFromSpans parameters: - name: dataset_id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateDatasetItemsFromSpansRequest" responses: "204": description: No content /v1/private/datasets/{dataset_id}/items/from-traces: post: tags: - Datasets summary: Create dataset items from traces description: Create dataset items from traces with enriched metadata operationId: createDatasetItemsFromTraces parameters: - name: dataset_id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateDatasetItemsFromTracesRequest" responses: "204": description: No content /v1/private/datasets/{id}: get: tags: - Datasets summary: Get dataset by id description: Get dataset by id operationId: getDatasetById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Dataset resource content: application/json: schema: $ref: "#/components/schemas/Dataset_Public" put: tags: - Datasets summary: Update dataset by id description: Update dataset by id operationId: updateDataset parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetUpdate" responses: "204": description: No content delete: tags: - Datasets summary: Delete dataset by id description: Delete dataset by id operationId: deleteDataset parameters: - name: id in: path required: true schema: type: string format: uuid responses: "204": description: No content /v1/private/datasets/delete: post: tags: - Datasets summary: Delete dataset by name description: Delete dataset by name operationId: deleteDatasetByName requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetIdentifier" responses: "204": description: No content /v1/private/datasets/items/delete: post: tags: - Datasets summary: Delete dataset items description: | Delete dataset items using one of two modes: 1. **Delete by IDs**: Provide 'item_ids' to delete specific items by their IDs 2. **Delete by filters**: Provide 'dataset_id' with optional 'filters' to delete items matching criteria When using filters, an empty 'filters' array will delete all items in the specified dataset. operationId: deleteDatasetItems requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetItemsDelete" responses: "204": description: No content "400": description: Bad request - invalid parameters or conflicting fields /v1/private/datasets/delete-batch: post: tags: - Datasets summary: Delete datasets description: Delete datasets batch operationId: deleteDatasetsBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No content /v1/private/datasets/export-jobs/{jobId}/download: get: tags: - Datasets summary: Download dataset export file description: Downloads the exported CSV file for a completed export job. This endpoint proxies the file download to avoid exposing internal storage URLs. operationId: downloadDatasetExport parameters: - name: jobId in: path required: true schema: type: string format: uuid responses: "200": description: CSV file content content: text/csv: schema: type: string format: binary "400": description: Export job is not ready for download "404": description: Export job not found /v1/private/datasets/{id}/expansions: post: tags: - Datasets summary: Expand dataset with synthetic samples description: Generate synthetic dataset samples using LLM based on existing data patterns operationId: expandDataset parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetExpansion_Write" responses: "200": description: Generated synthetic samples content: application/json: schema: $ref: "#/components/schemas/DatasetExpansionResponse" /v1/private/datasets/{id}/items/experiments/items: get: tags: - Datasets summary: Find dataset items with experiment items description: Find dataset items with experiment items operationId: findDatasetItemsWithExperimentItems parameters: - name: id in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: experiment_ids in: query required: true schema: type: string - name: filters in: query schema: type: string - name: sorting in: query schema: type: string - name: search in: query schema: type: string - name: truncate in: query schema: type: boolean description: "Truncate image included in either input, output or metadata" responses: "200": description: Dataset item resource content: application/json: schema: $ref: "#/components/schemas/DatasetItemPage_Compare" /v1/private/datasets/retrieve: post: tags: - Datasets summary: Get dataset by name description: Get dataset by name operationId: getDatasetByIdentifier requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetIdentifier_Public" responses: "200": description: Dataset resource content: application/json: schema: $ref: "#/components/schemas/Dataset_Public" /v1/private/datasets/{id}/items/experiments/items/stats: get: tags: - Datasets summary: Get experiment items stats for dataset description: Get experiment items stats for dataset operationId: getDatasetExperimentItemsStats parameters: - name: id in: path required: true schema: type: string format: uuid - name: experiment_ids in: query required: true schema: type: string - name: filters in: query schema: type: string responses: "200": description: Experiment items stats resource content: application/json: schema: $ref: "#/components/schemas/ProjectStats_Public" /v1/private/datasets/export-jobs/{jobId}: get: tags: - Datasets summary: Get dataset export job status description: Retrieves the current status of a dataset export job operationId: getDatasetExportJob parameters: - name: jobId in: path required: true schema: type: string format: uuid responses: "200": description: Export job details content: application/json: schema: $ref: "#/components/schemas/DatasetExportJob_Public" "404": description: Export job not found /v1/private/datasets/export-jobs: get: tags: - Datasets summary: Get all dataset export jobs description: Retrieves all export jobs for the workspace. This is used to restore the export panel state after page refresh. operationId: getDatasetExportJobs responses: "200": description: List of export jobs content: application/json: schema: type: array items: $ref: "#/components/schemas/DatasetExportJob_Public" /v1/private/datasets/items/{itemId}: get: tags: - Datasets summary: Get dataset item by id description: Get dataset item by id operationId: getDatasetItemById parameters: - name: itemId in: path required: true schema: type: string format: uuid responses: "200": description: Dataset item resource content: application/json: schema: $ref: "#/components/schemas/DatasetItem_Public" patch: tags: - Datasets summary: Partially update dataset item by id description: Partially update dataset item by id. Only provided fields will be updated. operationId: patchDatasetItem parameters: - name: itemId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetItem_Write" responses: "204": description: No content "404": description: Dataset item not found /v1/private/datasets/{id}/items: get: tags: - Datasets summary: Get dataset items description: Get dataset items operationId: getDatasetItems parameters: - name: id in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: version in: query schema: type: string description: Version hash or tag to fetch specific dataset version - name: filters in: query schema: type: string - name: truncate in: query schema: type: boolean description: "Truncate image included in either input, output or metadata" responses: "200": description: Dataset items resource content: application/json: schema: $ref: "#/components/schemas/DatasetItemPage_Public" /v1/private/datasets/{id}/items/experiments/items/output/columns: get: tags: - Datasets summary: Get dataset items output columns description: Get dataset items output columns operationId: getDatasetItemsOutputColumns parameters: - name: id in: path required: true schema: type: string format: uuid - name: experiment_ids in: query schema: type: string responses: "200": description: Dataset item output columns content: application/json: schema: $ref: "#/components/schemas/PageColumns" /v1/private/datasets/export-jobs/{jobId}/mark-viewed: put: tags: - Datasets summary: Mark dataset export job as viewed description: Marks a dataset export job as viewed by setting the viewed_at timestamp. This is used to track that a user has seen a failed job's error message. This operation is idempotent. operationId: markDatasetExportJobViewed parameters: - name: jobId in: path required: true schema: type: string format: uuid responses: "204": description: Job marked as viewed "404": description: Export job not found /v1/private/datasets/{id}/export: post: tags: - Datasets summary: Start dataset CSV export description: Initiates an asynchronous CSV export job for the dataset. Returns immediately with job details for polling. operationId: startDatasetExport parameters: - name: id in: path required: true schema: type: string format: uuid responses: "202": description: Export job created content: application/json: schema: $ref: "#/components/schemas/DatasetExportJob_Public" "200": description: Existing export job in progress content: application/json: schema: $ref: "#/components/schemas/DatasetExportJob_Public" /v1/private/datasets/items/stream: post: tags: - Datasets summary: Stream dataset items description: Stream dataset items operationId: streamDatasetItems requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetItemStreamRequest" responses: "200": description: Dataset items stream or error during process content: application/octet-stream: schema: maxItems: 2000 type: array items: type: string anyOf: - $ref: "#/components/schemas/DatasetItem" - $ref: "#/components/schemas/ErrorMessage" /v1/private/datasets/{id}/versions/diff: get: tags: - Datasets summary: Compare latest version with draft description: "Compare the latest committed dataset version with the current\ \ draft state. This endpoint provides insights into changes made since the\ \ last version was committed. The comparison calculates additions, modifications,\ \ deletions, and unchanged items between the latest version snapshot and current\ \ draft." operationId: compareDatasetVersions parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Diff computed successfully content: application/json: schema: $ref: "#/components/schemas/DatasetVersionDiff" "404": description: Version not found /v1/private/datasets/{id}/versions/hash/{versionHash}/tags: post: tags: - Datasets summary: Create version tag description: "Add a tag to a specific dataset version for easy reference (e.g.,\ \ 'baseline', 'v1.0', 'production')" operationId: createVersionTag parameters: - name: versionHash in: path required: true schema: type: string - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetVersionTag" responses: "204": description: Tag created successfully "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found - Version not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict - Tag already exists content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/datasets/{id}/versions/{versionHash}/tags/{tag}: delete: tags: - Datasets summary: Delete version tag description: "Remove a tag from a dataset version. The version itself is not\ \ deleted, only the tag reference." operationId: deleteVersionTag parameters: - name: versionHash in: path required: true schema: type: string - name: tag in: path required: true schema: type: string - name: id in: path required: true schema: type: string format: uuid responses: "204": description: Tag deleted successfully /v1/private/datasets/{id}/versions: get: tags: - Datasets summary: List dataset versions description: "Get paginated list of versions for a dataset, ordered by creation\ \ time (newest first)" operationId: listDatasetVersions parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Dataset versions content: application/json: schema: $ref: "#/components/schemas/DatasetVersionPage_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/datasets/{id}/versions/restore: post: tags: - Datasets summary: Restore dataset to a previous version description: "Restores the dataset to a previous version state by creating a\ \ new version with items copied from the specified version. If the version\ \ is already the latest, returns it as-is (no-op)." operationId: restoreDatasetVersion parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetVersionRestore_Public" responses: "200": description: Version restored successfully content: application/json: schema: $ref: "#/components/schemas/DatasetVersion_Public" "404": description: Version not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/datasets/{id}/versions/retrieve: post: tags: - Datasets summary: Retrieve dataset version by name description: "Get a specific version by its version name (e.g., 'v1', 'v373').\ \ This is more efficient than paginating through all versions for large datasets." operationId: retrieveDatasetVersion parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetVersionRetrieveRequest_Public" responses: "200": description: Dataset version content: application/json: schema: $ref: "#/components/schemas/DatasetVersion_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "404": description: Version not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/datasets/{id}/versions/hash/{versionHash}: patch: tags: - Datasets summary: Update dataset version description: Update a dataset version's change_description and/or add new tags operationId: updateDatasetVersion parameters: - name: versionHash in: path required: true schema: type: string - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DatasetVersionUpdate_Public" responses: "200": description: Version updated successfully content: application/json: schema: $ref: "#/components/schemas/DatasetVersion_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "404": description: Not Found - Version not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "409": description: Conflict - Tag already exists content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/experiments/batch: patch: tags: - Experiments summary: Batch update experiments description: Update multiple experiments operationId: batchUpdateExperiments requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentBatchUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments: get: tags: - Experiments summary: Find experiments description: Find experiments operationId: findExperiments parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: datasetId in: query schema: type: string format: uuid - name: optimization_id in: query schema: type: string format: uuid - name: types in: query schema: type: string - name: name in: query schema: type: string description: "Filter experiments by name (partial match, case insensitive)" - name: dataset_deleted in: query schema: type: boolean - name: prompt_id in: query schema: type: string format: uuid - name: project_id in: query schema: type: string format: uuid - name: project_deleted in: query schema: type: boolean - name: sorting in: query schema: type: string - name: filters in: query schema: type: string - name: experiment_ids in: query schema: type: string description: Filter experiments by a list of experiment IDs - name: force_sorting in: query schema: type: boolean description: Force sorting even when exceeding the endpoint result set limit. May result in slower queries default: false responses: "200": description: Experiments resource content: application/json: schema: $ref: "#/components/schemas/ExperimentPage_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" post: tags: - Experiments summary: Create experiment description: Create experiment operationId: createExperiment requestBody: content: application/json: schema: $ref: "#/components/schemas/Experiment_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/experiments/{id}" /v1/private/experiments/items: post: tags: - Experiments summary: Create experiment items description: Create experiment items operationId: createExperimentItems requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentItemsBatch" responses: "204": description: No content /v1/private/experiments/items/delete: post: tags: - Experiments summary: Delete experiment items description: Delete experiment items operationId: deleteExperimentItems requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentItemsDelete" responses: "204": description: No content /v1/private/experiments/delete: post: tags: - Experiments summary: Delete experiments by id description: Delete experiments by id operationId: deleteExperimentsById requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteIdsHolder" responses: "204": description: No content /v1/private/experiments/items/bulk: put: tags: - Experiments summary: Record experiment items in bulk description: "Record experiment items in bulk with traces, spans, and feedback\ \ scores. Maximum request size is 4MB." operationId: experimentItemsBulk requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentItemBulkUpload_ExperimentItemBulkWriteView" responses: "204": description: No content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Experiment dataset mismatch content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments/feedback-scores/names: get: tags: - Experiments summary: Find Feedback Score names description: Find Feedback Score names operationId: findFeedbackScoreNames parameters: - name: experiment_ids in: query schema: type: string - name: project_id in: query schema: type: string format: uuid responses: "200": description: Feedback Scores resource content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreNames_Public" /v1/private/experiments/groups: get: tags: - Experiments summary: Find experiment groups description: Find experiments grouped by specified fields operationId: findExperimentGroups parameters: - name: groups in: query schema: type: string - name: types in: query schema: type: string - name: name in: query schema: type: string description: "Filter experiments by name (partial match, case insensitive)" - name: project_id in: query schema: type: string format: uuid - name: project_deleted in: query schema: type: boolean - name: filters in: query schema: type: string responses: "200": description: Experiment groups content: application/json: schema: $ref: "#/components/schemas/ExperimentGroupResponse" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments/groups/aggregations: get: tags: - Experiments summary: Find experiment groups with aggregations description: Find experiments grouped by specified fields with aggregation metrics operationId: findExperimentGroupsAggregations parameters: - name: groups in: query schema: type: string - name: types in: query schema: type: string - name: name in: query schema: type: string description: "Filter experiments by name (partial match, case insensitive)" - name: project_id in: query schema: type: string format: uuid - name: project_deleted in: query schema: type: boolean description: Filter experiments by deleted projects - name: filters in: query schema: type: string responses: "200": description: Experiment groups with aggregations content: application/json: schema: $ref: "#/components/schemas/ExperimentGroupAggregationsResponse" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments/finish: post: tags: - Experiments summary: Finish experiments description: Finish experiments and trigger alert events operationId: finishExperiments requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteIdsHolder" responses: "204": description: No content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments/{id}: get: tags: - Experiments summary: Get experiment by id description: Get experiment by id operationId: getExperimentById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Experiment resource content: application/json: schema: $ref: "#/components/schemas/Experiment_Public" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" patch: tags: - Experiments summary: Update experiment by id description: Update experiment by id operationId: updateExperiment parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentUpdate" responses: "204": description: No Content "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments/items/{id}: get: tags: - Experiments summary: Get experiment item by id description: Get experiment item by id operationId: getExperimentItemById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Experiment item resource content: application/json: schema: $ref: "#/components/schemas/ExperimentItem_Public" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/experiments/items/stream: post: tags: - Experiments summary: Stream experiment items description: Stream experiment items operationId: streamExperimentItems requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentItemStreamRequest" responses: "200": description: Experiment items stream or error during process content: application/octet-stream: schema: maxItems: 2000 type: array items: type: string anyOf: - $ref: "#/components/schemas/ExperimentItem" - $ref: "#/components/schemas/ErrorMessage" /v1/private/experiments/stream: post: tags: - Experiments summary: Stream experiments description: Stream experiments operationId: streamExperiments requestBody: content: application/json: schema: $ref: "#/components/schemas/ExperimentStreamRequest_Public" responses: "200": description: Experiments stream or error during process content: application/octet-stream: schema: maxItems: 2000 type: array items: type: string anyOf: - $ref: "#/components/schemas/Experiment_Public" - $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/feedback-definitions: get: tags: - Feedback-definitions summary: Find Feedback definitions description: Find Feedback definitions operationId: findFeedbackDefinitions parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter feedback definitions by name (partial match, case insensitive)" - name: type in: query schema: type: string enum: - numerical - categorical - boolean responses: "200": description: Feedback definitions resource content: application/json: schema: $ref: "#/components/schemas/FeedbackDefinitionPage_Public" post: tags: - Feedback-definitions summary: Create feedback definition description: Get feedback definition operationId: createFeedbackDefinition requestBody: content: application/json: schema: $ref: "#/components/schemas/Feedback_Create" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/feedback-definitions/{feedbackId}" /v1/private/feedback-definitions/{id}: get: tags: - Feedback-definitions summary: Get feedback definition by id description: Get feedback definition by id operationId: getFeedbackDefinitionById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Feedback definition resource content: application/json: schema: $ref: "#/components/schemas/Feedback_Public" put: tags: - Feedback-definitions summary: Update feedback definition by id description: Update feedback definition by id operationId: updateFeedbackDefinition parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Feedback_Update" responses: "204": description: No Content delete: tags: - Feedback-definitions summary: Delete feedback definition by id description: Delete feedback definition by id operationId: deleteFeedbackDefinitionById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "204": description: No Content "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/feedback-definitions/delete: post: tags: - Feedback-definitions summary: Delete feedback definitions description: Delete feedback definitions batch operationId: deleteFeedbackDefinitionsBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/guardrails: post: tags: - Guardrails summary: Create guardrails for traces in a batch description: Batch guardrails for traces operationId: createGuardrails requestBody: content: application/json: schema: $ref: "#/components/schemas/GuardrailBatch_Write" responses: "204": description: No Content /v1/private/insights-views: get: tags: - Insights Views summary: Find insights views description: Find insights views in a workspace operationId: findInsightsViews parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter insights views by name (partial match, case insensitive)" - name: project_id in: query schema: type: string format: uuid - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: Insights view page content: application/json: schema: $ref: "#/components/schemas/DashboardPage_Public" post: tags: - Insights Views summary: Create insights view description: Create a new insights view in a workspace operationId: createInsightsView requestBody: content: application/json: schema: $ref: "#/components/schemas/Dashboard_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/insights-views/{insightsViewId}" content: application/json: schema: $ref: "#/components/schemas/Dashboard_Public" /v1/private/insights-views/{insightsViewId}: get: tags: - Insights Views summary: Get insights view by id description: Get insights view by id operationId: getInsightsViewById parameters: - name: insightsViewId in: path required: true schema: type: string format: uuid responses: "200": description: Insights view resource content: application/json: schema: $ref: "#/components/schemas/Dashboard_Public" "404": description: Insights view not found delete: tags: - Insights Views summary: Delete insights view description: Delete insights view by id operationId: deleteInsightsView parameters: - name: insightsViewId in: path required: true schema: type: string format: uuid responses: "204": description: No content patch: tags: - Insights Views summary: Update insights view description: Update insights view by id. Partial updates are supported - only provided fields will be updated. operationId: updateInsightsView parameters: - name: insightsViewId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DashboardUpdate_Public" responses: "200": description: Updated insights view content: application/json: schema: $ref: "#/components/schemas/Dashboard_Public" "404": description: Insights view not found "409": description: Conflict - insights view with this name already exists /v1/private/insights-views/delete-batch: post: tags: - Insights Views summary: Delete insights views description: Delete insights views batch operationId: deleteInsightsViewsBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No content /v1/private/llm/models: get: tags: - LLM Models summary: Get LLM models description: Get the list of supported LLM models grouped by provider operationId: getLlmModels responses: "200": description: LLM models by provider content: application/json: schema: type: string /v1/private/llm-provider-key/delete: post: tags: - LlmProviderKey summary: Delete LLM Provider's ApiKeys description: Delete LLM Provider's ApiKeys batch operationId: deleteLlmProviderApiKeysBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/llm-provider-key: get: tags: - LlmProviderKey summary: Find LLM Provider's ApiKeys description: Find LLM Provider's ApiKeys operationId: findLlmProviderKeys responses: "200": description: LLMProviderApiKey resource content: application/json: schema: $ref: "#/components/schemas/ProviderApiKeyPage_Public" post: tags: - LlmProviderKey summary: Store LLM Provider's ApiKey description: Store LLM Provider's ApiKey operationId: storeLlmProviderApiKey requestBody: content: application/json: schema: $ref: "#/components/schemas/ProviderApiKey_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/proxy/api_key/{apiKeyId}" "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/llm-provider-key/{id}: get: tags: - LlmProviderKey summary: Get LLM Provider's ApiKey by id description: Get LLM Provider's ApiKey by id operationId: getLlmProviderApiKeyById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: LLMProviderApiKey resource content: application/json: schema: $ref: "#/components/schemas/ProviderApiKey_Public" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" patch: tags: - LlmProviderKey summary: Update LLM Provider's ApiKey description: Update LLM Provider's ApiKey operationId: updateLlmProviderApiKey parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/ProviderApiKeyUpdate" responses: "204": description: No Content "401": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "403": description: Access forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/jobs/{jobId}/logs: get: tags: - Runners summary: Get local runner job logs description: Get log entries for a local runner job operationId: getJobLogs parameters: - name: jobId in: path required: true schema: type: string format: uuid - name: offset in: query schema: minimum: 0 type: integer format: int32 default: 0 responses: "200": description: Log entries content: application/json: schema: type: array items: $ref: "#/components/schemas/LocalRunnerLogEntry" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" post: tags: - Runners summary: Append local runner job logs description: Append log entries for a running local runner job operationId: appendJobLogs parameters: - name: jobId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/LocalRunnerLogEntry" responses: "204": description: No content "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/jobs/{jobId}/cancel: post: tags: - Runners summary: Cancel local runner job description: Cancel a pending or running local runner job operationId: cancelJob parameters: - name: jobId in: path required: true schema: type: string format: uuid responses: "204": description: No content "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/connections: post: tags: - Runners summary: Connect a local runner description: Exchange a pairing code or API key for local runner credentials operationId: connectRunner requestBody: content: application/json: schema: $ref: "#/components/schemas/LocalRunnerConnectRequest" responses: "201": description: Runner connected headers: Location: description: URI of the runner style: simple content: application/json: schema: $ref: "#/components/schemas/LocalRunnerConnectResponse" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/jobs: post: tags: - Runners summary: Create local runner job description: Create a local runner job and enqueue it for execution operationId: createJob requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateLocalRunnerJobRequest" responses: "201": description: Job created headers: Location: description: URI of the job style: simple "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/pairs: post: tags: - Runners summary: Generate a pairing code description: Generate a pairing code for a local runner in the current workspace operationId: generatePairingCode requestBody: content: application/json: schema: $ref: "#/components/schemas/LocalRunnerPairRequest" responses: "201": description: Pairing code generated headers: Location: description: URI of the runner style: simple content: application/json: schema: $ref: "#/components/schemas/LocalRunnerPairResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/jobs/{jobId}: get: tags: - Runners summary: Get local runner job description: Get a single local runner job's status and results operationId: getJob parameters: - name: jobId in: path required: true schema: type: string format: uuid responses: "200": description: Job details content: application/json: schema: $ref: "#/components/schemas/LocalRunnerJob" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/{runnerId}: get: tags: - Runners summary: Get local runner description: Get a single local runner with its registered agents operationId: getRunner parameters: - name: runnerId in: path required: true schema: type: string format: uuid responses: "200": description: Runner details content: application/json: schema: $ref: "#/components/schemas/LocalRunner" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/{runnerId}/heartbeats: post: tags: - Runners summary: Local runner heartbeat description: Refresh local runner heartbeat operationId: heartbeat parameters: - name: runnerId in: path required: true schema: type: string format: uuid responses: "200": description: Heartbeat response content: application/json: schema: $ref: "#/components/schemas/LocalRunnerHeartbeatResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "410": description: Gone content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/{runnerId}/jobs: get: tags: - Runners summary: List local runner jobs description: List jobs for a local runner operationId: listJobs parameters: - name: runnerId in: path required: true schema: type: string format: uuid - name: project_id in: query schema: type: string format: uuid - name: page in: query schema: minimum: 0 type: integer format: int32 default: 0 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 25 responses: "200": description: Jobs list content: application/json: schema: $ref: "#/components/schemas/LocalRunnerJobPage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners: get: tags: - Runners summary: List local runners description: List local runners owned by the current user in the workspace operationId: listRunners parameters: - name: project_id in: query required: true schema: type: string format: uuid - name: page in: query schema: minimum: 0 type: integer format: int32 default: 0 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 25 responses: "200": description: Runners list content: application/json: schema: $ref: "#/components/schemas/LocalRunnerPage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/{runnerId}/jobs/next: post: tags: - Runners summary: Next local runner job description: Long-poll for the next pending local runner job operationId: nextJob parameters: - name: runnerId in: path required: true schema: type: string format: uuid responses: "200": description: Job available content: application/json: schema: $ref: "#/components/schemas/LocalRunnerJob" "204": description: No content "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/{runnerId}/agents: put: tags: - Runners summary: Register local runner agents description: Register or update the local runner's agent list operationId: registerAgents parameters: - name: runnerId in: path required: true schema: type: string format: uuid requestBody: description: Map of agent name to agent definition content: application/json: schema: type: object responses: "204": description: No content "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/local-runners/jobs/{jobId}/results: post: tags: - Runners summary: Report local runner job result description: Report local runner job completion or failure operationId: reportJobResult parameters: - name: jobId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/LocalRunnerJobResultRequest" responses: "204": description: No content "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/manual-evaluation/spans: post: tags: - Manual Evaluation summary: Manually evaluate spans description: Manually trigger evaluation rules on selected spans. Bypasses sampling and enqueues all specified spans for evaluation. operationId: evaluateSpans requestBody: content: application/json: schema: $ref: "#/components/schemas/ManualEvaluationRequest" responses: "202": description: Accepted - Evaluation request queued successfully content: application/json: schema: $ref: "#/components/schemas/ManualEvaluationResponse" "400": description: Bad Request - Invalid request or missing automation rules content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found - Project not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/manual-evaluation/threads: post: tags: - Manual Evaluation summary: Manually evaluate threads description: Manually trigger evaluation rules on selected threads. Bypasses sampling and enqueues all specified threads for evaluation. operationId: evaluateThreads requestBody: content: application/json: schema: $ref: "#/components/schemas/ManualEvaluationRequest" responses: "202": description: Accepted - Evaluation request queued successfully content: application/json: schema: $ref: "#/components/schemas/ManualEvaluationResponse" "400": description: Bad Request - Invalid request or missing automation rules content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found - Project not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/manual-evaluation/traces: post: tags: - Manual Evaluation summary: Manually evaluate traces description: Manually trigger evaluation rules on selected traces. Bypasses sampling and enqueues all specified traces for evaluation. operationId: evaluateTraces requestBody: content: application/json: schema: $ref: "#/components/schemas/ManualEvaluationRequest" responses: "202": description: Accepted - Evaluation request queued successfully content: application/json: schema: $ref: "#/components/schemas/ManualEvaluationResponse" "400": description: Bad Request - Invalid request or missing automation rules content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found - Project not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/ollama/models: post: tags: - Ollama summary: List available Ollama models description: "Fetches the list of models available from the Ollama instance.\ \ URL may be provided with or without /v1 suffix (e.g., http://localhost:11434\ \ or http://localhost:11434/v1). The /v1 suffix will be automatically removed\ \ for model discovery. For actual LLM inference, use the URL with /v1 suffix\ \ for OpenAI-compatible endpoints." operationId: listModels requestBody: content: application/json: schema: $ref: "#/components/schemas/OllamaInstanceBaseUrlRequest" required: true responses: "200": description: Models retrieved successfully content: application/json: schema: type: array items: $ref: "#/components/schemas/OllamaModel" "422": description: Unprocessable Content - Invalid URL format content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "500": description: Failed to fetch models "503": description: Ollama provider is disabled content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/ollama/test-connection: post: tags: - Ollama summary: Test connection to Ollama instance description: "Validates that the provided Ollama URL is reachable. URL may be\ \ provided with or without /v1 suffix (e.g., http://localhost:11434 or http://localhost:11434/v1).\ \ The /v1 suffix will be automatically removed for connection testing. For\ \ inference, use the URL with /v1 suffix." operationId: testConnection requestBody: content: application/json: schema: $ref: "#/components/schemas/OllamaInstanceBaseUrlRequest" required: true responses: "200": description: Connection test successful content: application/json: schema: $ref: "#/components/schemas/OllamaConnectionTestResponse" "422": description: Unprocessable Content - Invalid URL format content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "502": description: Connection test failed - Ollama instance unreachable content: application/json: schema: $ref: "#/components/schemas/OllamaConnectionTestResponse" "503": description: Ollama provider is disabled content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/ollie/state: get: tags: - Ollie State summary: Download ollie state description: Download stored ollie state file operationId: downloadOllieState responses: "200": description: Ollie state file content: application/gzip: schema: type: string format: binary "401": description: Unauthorized content: application/gzip: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not found content: application/gzip: schema: $ref: "#/components/schemas/ErrorMessage" put: tags: - Ollie State summary: Replace ollie state description: "Upload gzip-compressed SQLite DB file, replacing any existing\ \ state" operationId: replaceOllieState parameters: - name: Content-Length in: header schema: type: integer format: int64 requestBody: content: application/gzip: schema: type: object responses: "204": description: No content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "429": description: Rate limit exceeded content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" delete: tags: - Ollie State summary: Delete ollie state description: Clear stored ollie state operationId: deleteOllieState responses: "204": description: No content "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/otel/v1/traces: post: tags: - OpenTelemetry Ingestion operationId: receiveProtobufTraces requestBody: content: application/x-protobuf: schema: $ref: "#/components/schemas/JsonNode" responses: default: description: default response content: '*/*': {} /v1/private/optimizations/studio/{id}/cancel: get: tags: - Optimizations summary: Cancel Studio optimizations description: Cancel Studio optimizations by id operationId: cancelStudioOptimizations parameters: - name: id in: path required: true schema: type: string format: uuid responses: "501": description: Not Implemented /v1/private/optimizations: get: tags: - Optimizations summary: Find optimizations description: Find optimizations operationId: findOptimizations parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: dataset_id in: query schema: type: string format: uuid - name: name in: query schema: type: string description: "Filter optimizations by name (partial match, case insensitive)" - name: dataset_name in: query schema: type: string description: Filter optimizations by dataset name (partial match) - name: dataset_deleted in: query schema: type: boolean - name: project_id in: query schema: type: string format: uuid - name: filters in: query schema: type: string responses: "200": description: Optimizations resource content: application/json: schema: $ref: "#/components/schemas/OptimizationPage_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" put: tags: - Optimizations summary: Upsert optimization description: Upsert optimization operationId: upsertOptimization requestBody: content: application/json: schema: $ref: "#/components/schemas/Optimization_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/optimizations/{id}" post: tags: - Optimizations summary: Create optimization description: Create optimization operationId: createOptimization requestBody: content: application/json: schema: $ref: "#/components/schemas/Optimization_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/optimizations/{id}" /v1/private/optimizations/delete: post: tags: - Optimizations summary: Delete optimizations by id description: Delete optimizations by id operationId: deleteOptimizationsById requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteIdsHolder" responses: "204": description: No content /v1/private/optimizations/{id}: get: tags: - Optimizations summary: Get optimization by id description: Get optimization by id operationId: getOptimizationById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Optimization resource content: application/json: schema: $ref: "#/components/schemas/Optimization_Public" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" put: tags: - Optimizations summary: Update optimization by id description: Update optimization by id operationId: updateOptimizationsById parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/OptimizationUpdate" responses: "204": description: No content /v1/private/optimizations/studio/{id}/logs: get: tags: - Optimizations summary: Get Studio optimization logs description: Get presigned S3 URL for downloading optimization logs operationId: getStudioOptimizationLogs parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Logs response content: application/json: schema: $ref: "#/components/schemas/OptimizationStudioLog" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/projects/{projectId}/alerts: get: tags: - Projects summary: Find alerts by project description: Find alerts scoped to a project operationId: findAlertsByProject parameters: - name: projectId in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: Alerts page content: application/json: schema: $ref: "#/components/schemas/AlertPage_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/projects/{projectId}/dashboards: get: tags: - Projects summary: Find dashboards by project description: Find dashboards scoped to a project operationId: findDashboardsByProject parameters: - name: projectId in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter dashboards by name (partial match, case insensitive)" - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: Dashboard page content: application/json: schema: $ref: "#/components/schemas/DashboardPage_Public" /v1/private/projects/{projectId}/datasets: get: tags: - Projects summary: Find datasets by project description: Find datasets scoped to a project operationId: findDatasetsByProject parameters: - name: projectId in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: with_experiments_only in: query schema: type: boolean - name: with_optimizations_only in: query schema: type: boolean - name: name in: query schema: type: string description: "Filter datasets by name (partial match, case insensitive)" - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: Dataset page content: application/json: schema: $ref: "#/components/schemas/DatasetPage_Public" /v1/private/projects/{projectId}/experiments: get: tags: - Projects summary: Find experiments by project description: Find experiments scoped to a project operationId: findExperimentsByProject parameters: - name: projectId in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: datasetId in: query schema: type: string format: uuid - name: optimization_id in: query schema: type: string format: uuid - name: types in: query schema: type: string - name: name in: query schema: type: string description: "Filter experiments by name (partial match, case insensitive)" - name: dataset_deleted in: query schema: type: boolean - name: sorting in: query schema: type: string - name: filters in: query schema: type: string - name: experiment_ids in: query schema: type: string description: Filter experiments by a list of experiment IDs - name: force_sorting in: query schema: type: boolean description: Force sorting even when exceeding the endpoint result set limit. May result in slower queries default: false responses: "200": description: Experiments page content: application/json: schema: $ref: "#/components/schemas/ExperimentPage_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/projects/{projectId}/optimizations: get: tags: - Projects summary: Find optimizations by project description: Find optimizations scoped to a project operationId: findOptimizationsByProject parameters: - name: projectId in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: dataset_id in: query schema: type: string format: uuid - name: dataset_name in: query schema: type: string - name: name in: query schema: type: string description: "Filter optimizations by name (partial match, case insensitive)" - name: dataset_deleted in: query schema: type: boolean - name: filters in: query schema: type: string responses: "200": description: Optimizations page content: application/json: schema: $ref: "#/components/schemas/OptimizationPage_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/projects/{projectId}/prompts: get: tags: - Projects summary: Get prompts by project description: Get prompts scoped to a project operationId: getPromptsByProject parameters: - name: projectId in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter prompts by name (partial match, case insensitive)" - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PromptPage_Public" /v1/private/projects: get: tags: - Projects summary: Find projects description: Find projects operationId: findProjects parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter projects by name (partial match, case insensitive)" - name: sorting in: query schema: type: string responses: "200": description: Project resource content: application/json: schema: $ref: "#/components/schemas/ProjectPage_Public" post: tags: - Projects summary: Create project description: Create project operationId: createProject requestBody: content: application/json: schema: $ref: "#/components/schemas/Project_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/projects/{projectId}" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/projects/{id}: get: tags: - Projects summary: Get project by id description: Get project by id operationId: getProjectById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Project resource content: application/json: schema: $ref: "#/components/schemas/Project_Public" delete: tags: - Projects summary: Delete project by id description: Delete project by id operationId: deleteProjectById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "204": description: No Content "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" patch: tags: - Projects summary: Update project by id description: Update project by id operationId: updateProject parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/ProjectUpdate" responses: "204": description: No Content "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/projects/delete: post: tags: - Projects summary: Delete projects description: Delete projects batch operationId: deleteProjectsBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/projects/feedback-scores/names: get: tags: - Projects summary: Find Feedback Score names By Project Ids description: Find Feedback Score names By Project Ids operationId: findFeedbackScoreNamesByProjectIds parameters: - name: project_ids in: query schema: type: string responses: "200": description: Feedback Scores resource content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreNames" /v1/private/projects/{id}/token-usage/names: get: tags: - Projects summary: Find Token Usage names description: Find Token Usage names operationId: findTokenUsageNames parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Token Usage names resource content: application/json: schema: $ref: "#/components/schemas/TokenUsageNames" /v1/private/projects/{id}/kpi-cards: post: tags: - Projects summary: Get Project KPI Cards description: Gets KPI card metrics for a project operationId: getProjectKpiCards parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/KpiCardRequest" responses: "200": description: KPI Card Metrics content: application/json: schema: $ref: "#/components/schemas/KpiCardResponse" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/projects/{id}/metrics: post: tags: - Projects summary: Get Project Metrics description: Gets specified metrics for a project operationId: getProjectMetrics parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/ProjectMetricRequest_Public" responses: "200": description: Project Metrics content: application/json: schema: $ref: "#/components/schemas/ProjectMetricResponse_Public" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/projects/stats: get: tags: - Projects summary: Get Project Stats description: Get Project Stats operationId: getProjectStats parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter projects by name (partial match, case insensitive)" - name: sorting in: query schema: type: string responses: "200": description: Project Stats content: application/json: schema: $ref: "#/components/schemas/ProjectStatsSummary" /v1/private/projects/retrieve: post: tags: - Projects summary: Retrieve project description: Retrieve project operationId: retrieveProject requestBody: content: application/json: schema: $ref: "#/components/schemas/ProjectRetrieve_Detailed" responses: "200": description: Project resource content: application/json: schema: $ref: "#/components/schemas/Project_Detailed" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detailed" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detailed" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detailed" /v1/private/prompts: get: tags: - Prompts summary: Get prompts description: Get prompts operationId: getPrompts parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: name in: query schema: type: string description: "Filter prompts by name (partial match, case insensitive)" - name: project_id in: query schema: type: string format: uuid - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PromptPage_Public" post: tags: - Prompts summary: Create prompt description: Create prompt operationId: createPrompt requestBody: content: application/json: schema: $ref: "#/components/schemas/Prompt_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/prompts/{promptId}" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/prompts/versions: post: tags: - Prompts summary: Create prompt version description: Create prompt version operationId: createPromptVersion requestBody: content: application/json: schema: $ref: "#/components/schemas/CreatePromptVersion_Detail" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PromptVersion_Detail" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" patch: tags: - Prompts summary: Update prompt versions description: | Update one or more prompt versions. Note: Prompt versions are immutable by design. Only organizational properties, such as tags etc., can be updated. Core properties like template and metadata cannot be modified after creation. PATCH semantics: - non-empty values update the field - null values preserve existing field values (no change) - empty values explicitly clear the field operationId: updatePromptVersions requestBody: content: application/json: schema: $ref: "#/components/schemas/PromptVersionBatchUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/prompts/{id}: get: tags: - Prompts summary: Get prompt by id description: Get prompt by id operationId: getPromptById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "200": description: Prompt resource content: application/json: schema: $ref: "#/components/schemas/Prompt_Detail" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" put: tags: - Prompts summary: Update prompt description: Update prompt operationId: updatePrompt parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Prompt_Updatable" responses: "204": description: No content "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" delete: tags: - Prompts summary: Delete prompt description: Delete prompt operationId: deletePrompt parameters: - name: id in: path required: true schema: type: string format: uuid responses: "204": description: No content /v1/private/prompts/delete: post: tags: - Prompts summary: Delete prompts description: Delete prompts batch operationId: deletePromptsBatch requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/prompts/by-commit/{commit}: get: tags: - Prompts summary: Get prompt by commit description: Get prompt by commit operationId: getPromptByCommit parameters: - name: commit in: path required: true schema: pattern: "^[a-zA-Z0-9]{8}$" type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Prompt_Detail" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" /v1/private/prompts/versions/{versionId}: get: tags: - Prompts summary: Get prompt version by id description: Get prompt version by id operationId: getPromptVersionById parameters: - name: versionId in: path required: true schema: type: string format: uuid responses: "200": description: Prompt version resource content: application/json: schema: $ref: "#/components/schemas/PromptVersion_Detail" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" /v1/private/prompts/{id}/versions: get: tags: - Prompts summary: Get prompt versions description: Get prompt versions operationId: getPromptVersions parameters: - name: id in: path required: true schema: type: string format: uuid - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: search in: query description: Search text to find in template or change description fields schema: type: string - name: sorting in: query schema: type: string - name: filters in: query schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PromptVersionPage_Public" /v1/private/prompts/retrieve-by-commits: post: tags: - Prompts summary: Get prompts by commits description: Get prompts by prompt version commits operationId: getPromptsByCommits requestBody: content: application/json: schema: $ref: "#/components/schemas/PromptVersionCommitsRequest_Public" responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/PromptVersionLink_Public" /v1/private/prompts/{promptId}/versions/{versionId}/restore: post: tags: - Prompts summary: Restore prompt version description: Restore a prompt version by creating a new version with the content from the specified version operationId: restorePromptVersion parameters: - name: promptId in: path required: true schema: type: string format: uuid - name: versionId in: path required: true schema: type: string format: uuid responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PromptVersion_Detail" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" /v1/private/prompts/versions/retrieve: post: tags: - Prompts summary: Retrieve prompt version description: Retrieve prompt version operationId: retrievePromptVersion requestBody: content: application/json: schema: $ref: "#/components/schemas/PromptVersionRetrieve_Detail" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PromptVersion_Detail" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" "404": description: Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage_Detail" /v1/private/retention/rules: get: tags: - Retention Rules summary: Find retention rules description: List retention rules for the caller's workspace. Defaults to active only. operationId: findRetentionRules parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: include_inactive in: query schema: type: boolean default: false responses: "200": description: Retention rules page content: application/json: schema: $ref: "#/components/schemas/RetentionRulePage_Public" post: tags: - Retention Rules summary: Create retention rule description: Create a new retention rule. Auto-deactivates any existing active rule for the same scope. operationId: createRetentionRule requestBody: content: application/json: schema: $ref: "#/components/schemas/RetentionRule_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/retention/rules/{ruleId}" content: application/json: schema: $ref: "#/components/schemas/RetentionRule_Public" /v1/private/retention/rules/{ruleId}: get: tags: - Retention Rules summary: Get retention rule by id description: Get a specific retention rule by id operationId: getRetentionRuleById parameters: - name: ruleId in: path required: true schema: type: string format: uuid responses: "200": description: Retention rule content: application/json: schema: $ref: "#/components/schemas/RetentionRule_Public" "404": description: Retention rule not found delete: tags: - Retention Rules summary: Deactivate retention rule description: Soft-deactivate a retention rule (sets enabled=false). Rules are never hard-deleted for audit trail. operationId: deactivateRetentionRule parameters: - name: ruleId in: path required: true schema: type: string format: uuid responses: "204": description: No content "404": description: Retention rule not found /v1/private/toggles: get: tags: - Service Toggles summary: Get Service Toggles description: Get Service Toggles operationId: getServiceToggles responses: "200": description: Service Toggles content: application/json: schema: $ref: "#/components/schemas/ServiceTogglesConfig" /v1/private/spans/{id}/comments: post: tags: - Spans summary: Add span comment description: Add span comment operationId: addSpanComment parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Comment" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/spans/{spanId}/comments/{commentId}" /v1/private/spans/{id}/feedback-scores: put: tags: - Spans summary: Add span feedback score description: Add span feedback score operationId: addSpanFeedbackScore parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/FeedbackScore" responses: "204": description: No Content /v1/private/spans/batch: post: tags: - Spans summary: Create spans description: Create spans operationId: createSpans requestBody: content: application/json: schema: $ref: "#/components/schemas/SpanBatch_Write" responses: "204": description: No Content patch: tags: - Spans summary: Batch update spans description: Update multiple spans operationId: batchUpdateSpans requestBody: content: application/json: schema: $ref: "#/components/schemas/SpanBatchUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/spans: get: tags: - Spans summary: Get spans by project_name or project_id and optionally by trace_id and/or type description: Get spans by project_name or project_id and optionally by trace_id and/or type operationId: getSpansByProject parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: project_name in: query schema: type: string - name: project_id in: query schema: type: string format: uuid - name: trace_id in: query schema: type: string format: uuid - name: type in: query schema: type: string enum: - general - tool - llm - guardrail - name: filters in: query schema: type: string - name: truncate in: query schema: type: boolean description: "Truncate input, output and metadata to slim payloads" default: false - name: strip_attachments in: query schema: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects stripped attachments" default: false - name: sorting in: query schema: type: string - name: exclude in: query schema: type: string - name: search in: query schema: type: string description: Full-text search across span fields - name: from_time in: query schema: type: string description: Filter spans created from this time (ISO-8601 format). format: date-time - name: to_time in: query schema: type: string description: "Filter spans created up to this time (ISO-8601 format). If\ \ not provided, defaults to current time. Must be after 'from_time'." format: date-time responses: "200": description: Spans resource content: application/json: schema: $ref: "#/components/schemas/SpanPage_Public" post: tags: - Spans summary: Create span description: Create span operationId: createSpan requestBody: content: application/json: schema: $ref: "#/components/schemas/Span_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/spans/{spanId}" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/spans/{id}: get: tags: - Spans summary: Get span by id description: Get span by id operationId: getSpanById parameters: - name: id in: path required: true schema: type: string format: uuid - name: strip_attachments in: query schema: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects attachment content from S3 (default:\ \ false for backward compatibility)" default: false responses: "200": description: Span resource content: application/json: schema: $ref: "#/components/schemas/Span_Public" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/Span_Public" delete: tags: - Spans summary: Delete span by id description: Delete span by id operationId: deleteSpanById parameters: - name: id in: path required: true schema: type: string responses: "501": description: Not implemented "204": description: No Content patch: tags: - Spans summary: Update span by id description: Update span by id operationId: updateSpan parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/SpanUpdate" responses: "204": description: No Content "404": description: Not found /v1/private/spans/comments/delete: post: tags: - Spans summary: Delete span comments description: Delete span comments operationId: deleteSpanComments requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/spans/{id}/feedback-scores/delete: post: tags: - Spans summary: Delete span feedback score description: Delete span feedback score operationId: deleteSpanFeedbackScore parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteFeedbackScore" responses: "204": description: No Content /v1/private/spans/feedback-scores/names: get: tags: - Spans summary: Find Feedback Score names description: Find Feedback Score names operationId: findFeedbackScoreNames_1 parameters: - name: project_id in: query schema: type: string format: uuid - name: type in: query schema: type: string enum: - general - tool - llm - guardrail responses: "200": description: Feedback Scores resource content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreNames_Public" /v1/private/spans/{spanId}/comments/{commentId}: get: tags: - Spans summary: Get span comment description: Get span comment operationId: getSpanComment parameters: - name: commentId in: path required: true schema: type: string format: uuid - name: spanId in: path required: true schema: type: string format: uuid responses: "200": description: Comment resource content: application/json: schema: $ref: "#/components/schemas/Comment" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/spans/stats: get: tags: - Spans summary: Get span stats description: Get span stats operationId: getSpanStats parameters: - name: project_id in: query schema: type: string format: uuid - name: project_name in: query schema: type: string - name: trace_id in: query schema: type: string format: uuid - name: type in: query schema: type: string enum: - general - tool - llm - guardrail - name: filters in: query schema: type: string - name: search in: query schema: type: string description: Full-text search across span fields - name: from_time in: query schema: type: string description: Filter spans created from this time (ISO-8601 format). format: date-time - name: to_time in: query schema: type: string description: "Filter spans created up to this time (ISO-8601 format). If\ \ not provided, defaults to current time. Must be after 'from_time'." format: date-time responses: "200": description: Span stats resource content: application/json: schema: $ref: "#/components/schemas/ProjectStats_Public" /v1/private/spans/feedback-scores: put: tags: - Spans summary: Batch feedback scoring for spans description: Batch feedback scoring for spans operationId: scoreBatchOfSpans requestBody: content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreBatch" responses: "204": description: No Content /v1/private/spans/search: post: tags: - Spans summary: Search spans description: Search spans operationId: searchSpans requestBody: content: application/json: schema: $ref: "#/components/schemas/SpanSearchStreamRequest_Public" responses: "200": description: Spans stream or error during process content: application/octet-stream: schema: maxItems: 2000 type: array items: type: string anyOf: - $ref: "#/components/schemas/Span_Public" - $ref: "#/components/schemas/ErrorMessage_Public" "400": description: Bad Request content: application/octet-stream: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/spans/comments/{commentId}: patch: tags: - Spans summary: Update span comment by id description: Update span comment by id operationId: updateSpanComment parameters: - name: commentId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Comment" responses: "204": description: No Content "404": description: Not found /v1/private/traces/threads/{id}/comments: post: tags: - Traces summary: Add thread comment description: Add thread comment operationId: addThreadComment parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Comment" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/traces/threads/{threadId}/comments/{commentId}" /v1/private/traces/{id}/comments: post: tags: - Traces summary: Add trace comment description: Add trace comment operationId: addTraceComment parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Comment" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/traces/{traceId}/comments/{commentId}" /v1/private/traces/{id}/feedback-scores: put: tags: - Traces summary: Add trace feedback score description: Add trace feedback score operationId: addTraceFeedbackScore parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/FeedbackScore" responses: "204": description: No Content /v1/private/traces/batch: post: tags: - Traces summary: Create traces description: Create traces operationId: createTraces requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceBatch_Write" responses: "204": description: No Content patch: tags: - Traces summary: Batch update traces description: Update multiple traces operationId: batchUpdateTraces requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceBatchUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces/threads/batch: patch: tags: - Traces summary: Batch update threads description: Update multiple threads operationId: batchUpdateThreads requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceThreadBatchUpdate" responses: "204": description: No Content "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces/threads/close: put: tags: - Traces summary: Close trace thread(s) description: Close one or multiple trace threads. Supports both single thread_id and multiple thread_ids for batch operations. operationId: closeTraceThread requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceThreadBatchIdentifier" responses: "204": description: No Content "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces: get: tags: - Traces summary: Get traces by project_name or project_id description: Get traces by project_name or project_id operationId: getTracesByProject parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: project_name in: query schema: type: string - name: project_id in: query schema: type: string format: uuid - name: filters in: query schema: type: string - name: truncate in: query schema: type: boolean description: "Truncate input, output and metadata to slim payloads" default: false - name: strip_attachments in: query schema: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects stripped attachments" default: false - name: sorting in: query schema: type: string - name: exclude in: query schema: type: string - name: search in: query schema: type: string description: Full-text search across trace fields - name: from_time in: query schema: type: string description: Filter traces created from this time (ISO-8601 format). format: date-time - name: to_time in: query schema: type: string description: "Filter traces created up to this time (ISO-8601 format). If\ \ not provided, defaults to current time. Must be after 'from_time'." format: date-time responses: "200": description: Trace resource content: application/json: schema: $ref: "#/components/schemas/TracePage_Public" post: tags: - Traces summary: Create trace description: Get trace operationId: createTrace requestBody: content: application/json: schema: $ref: "#/components/schemas/Trace_Write" responses: "201": description: Created headers: Location: required: true style: simple schema: type: string example: "${basePath}/v1/private/traces/{traceId}" /v1/private/traces/{id}: get: tags: - Traces summary: Get trace by id description: Get trace by id operationId: getTraceById parameters: - name: id in: path required: true schema: type: string format: uuid - name: strip_attachments in: query schema: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects attachment content from S3 (default:\ \ false for backward compatibility)" default: false responses: "200": description: Trace resource content: application/json: schema: $ref: "#/components/schemas/Trace_Public" delete: tags: - Traces summary: Delete trace by id description: Delete trace by id operationId: deleteTraceById parameters: - name: id in: path required: true schema: type: string format: uuid responses: "204": description: No Content patch: tags: - Traces summary: Update trace by id description: Update trace by id operationId: updateTrace parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceUpdate" responses: "204": description: No Content /v1/private/traces/threads/comments/delete: post: tags: - Traces summary: Delete thread comments description: Delete thread comments operationId: deleteThreadComments requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/traces/threads/feedback-scores/delete: post: tags: - Traces summary: Delete thread feedback scores description: Delete thread feedback scores operationId: deleteThreadFeedbackScores requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteThreadFeedbackScores" responses: "204": description: No Content /v1/private/traces/comments/delete: post: tags: - Traces summary: Delete trace comments description: Delete trace comments operationId: deleteTraceComments requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/traces/{id}/feedback-scores/delete: post: tags: - Traces summary: Delete trace feedback score description: Delete trace feedback score operationId: deleteTraceFeedbackScore parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteFeedbackScore" responses: "204": description: No Content /v1/private/traces/threads/delete: post: tags: - Traces summary: Delete trace threads description: Delete trace threads operationId: deleteTraceThreads requestBody: content: application/json: schema: $ref: "#/components/schemas/DeleteTraceThreads" responses: "204": description: No Content /v1/private/traces/delete: post: tags: - Traces summary: Delete traces description: Delete traces operationId: deleteTraces requestBody: content: application/json: schema: $ref: "#/components/schemas/BatchDelete" responses: "204": description: No Content /v1/private/traces/feedback-scores/names: get: tags: - Traces summary: Find Feedback Score names description: Find Feedback Score names operationId: findFeedbackScoreNames_2 parameters: - name: project_id in: query schema: type: string format: uuid responses: "200": description: Feedback Scores resource content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreNames_Public" /v1/private/traces/threads/feedback-scores/names: get: tags: - Traces summary: Find Trace Threads Feedback Score names description: Find Trace Threads Feedback Score names operationId: findTraceThreadsFeedbackScoreNames parameters: - name: project_id in: query schema: type: string format: uuid responses: "200": description: Find Trace Threads Feedback Score names content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreNames_Public" /v1/private/traces/stats: get: tags: - Traces summary: Get trace stats description: Get trace stats operationId: getTraceStats parameters: - name: project_id in: query schema: type: string format: uuid - name: project_name in: query schema: type: string - name: filters in: query schema: type: string - name: search in: query schema: type: string description: Full-text search across trace fields - name: from_time in: query schema: type: string description: Filter traces created from this time (ISO-8601 format). format: date-time - name: to_time in: query schema: type: string description: "Filter traces created up to this time (ISO-8601 format). If\ \ not provided, defaults to current time. Must be after 'from_time'." format: date-time responses: "200": description: Trace stats resource content: application/json: schema: $ref: "#/components/schemas/ProjectStats_Public" /v1/private/traces/threads/{threadId}/comments/{commentId}: get: tags: - Traces summary: Get thread comment description: Get thread comment operationId: getThreadComment parameters: - name: commentId in: path required: true schema: type: string format: uuid - name: threadId in: path required: true schema: type: string format: uuid responses: "200": description: Comment resource content: application/json: schema: $ref: "#/components/schemas/Comment" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces/threads/stats: get: tags: - Traces summary: Get trace thread stats description: Get trace thread stats operationId: getTraceThreadStats parameters: - name: project_id in: query schema: type: string format: uuid - name: project_name in: query schema: type: string - name: filters in: query schema: type: string - name: search in: query schema: type: string description: Full-text search across thread fields - name: from_time in: query schema: type: string description: Filter trace threads created from this time (ISO-8601 format). format: date-time - name: to_time in: query schema: type: string description: "Filter trace threads created up to this time (ISO-8601 format).\ \ If not provided, defaults to current time. Must be after 'from_time'." format: date-time responses: "200": description: Trace thread stats resource content: application/json: schema: $ref: "#/components/schemas/ProjectStats_Public" /v1/private/traces/{traceId}/comments/{commentId}: get: tags: - Traces summary: Get trace comment description: Get trace comment operationId: getTraceComment parameters: - name: commentId in: path required: true schema: type: string format: uuid - name: traceId in: path required: true schema: type: string format: uuid responses: "200": description: Comment resource content: application/json: schema: $ref: "#/components/schemas/Comment" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces/threads/retrieve: post: tags: - Traces summary: Get trace thread description: Get trace thread operationId: getTraceThread requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceThreadIdentifier" responses: "200": description: Trace thread resource content: application/json: schema: $ref: "#/components/schemas/TraceThread" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces/threads: get: tags: - Traces summary: Get trace threads description: Get trace threads operationId: getTraceThreads parameters: - name: page in: query schema: minimum: 1 type: integer format: int32 default: 1 - name: size in: query schema: minimum: 1 type: integer format: int32 default: 10 - name: project_name in: query schema: type: string - name: project_id in: query schema: type: string format: uuid - name: truncate in: query schema: type: boolean description: "Truncate input, output and metadata to slim payloads" default: false - name: strip_attachments in: query schema: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects stripped attachments" default: false - name: filters in: query schema: type: string - name: sorting in: query schema: type: string - name: search in: query schema: type: string description: Full-text search across thread fields - name: from_time in: query schema: type: string description: Filter trace threads created from this time (ISO-8601 format). format: date-time - name: to_time in: query schema: type: string description: "Filter trace threads created up to this time (ISO-8601 format).\ \ If not provided, defaults to current time. Must be after 'from_time'." format: date-time responses: "200": description: Trace threads resource content: application/json: schema: $ref: "#/components/schemas/TraceThreadPage" /v1/private/traces/threads/open: put: tags: - Traces summary: Open trace thread description: Open trace thread operationId: openTraceThread requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceThreadIdentifier" responses: "204": description: No Content /v1/private/traces/threads/feedback-scores: put: tags: - Traces summary: Batch feedback scoring for threads description: Batch feedback scoring for threads operationId: scoreBatchOfThreads requestBody: content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreBatchThread" responses: "204": description: No Content /v1/private/traces/feedback-scores: put: tags: - Traces summary: Batch feedback scoring for traces description: Batch feedback scoring for traces operationId: scoreBatchOfTraces requestBody: content: application/json: schema: $ref: "#/components/schemas/FeedbackScoreBatch" responses: "204": description: No Content /v1/private/traces/threads/search: post: tags: - Traces summary: Search trace threads description: Search trace threads operationId: searchTraceThreads requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceThreadSearchStreamRequest" responses: "200": description: Trace threads stream or error during process content: application/octet-stream: schema: maxItems: 2000 type: array items: type: string anyOf: - $ref: "#/components/schemas/TraceThread" - $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/octet-stream: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/traces/search: post: tags: - Traces summary: Search traces description: Search traces operationId: searchTraces requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceSearchStreamRequest_Public" responses: "200": description: Traces stream or error during process content: application/octet-stream: schema: maxItems: 2000 type: array items: type: string anyOf: - $ref: "#/components/schemas/Trace_Public" - $ref: "#/components/schemas/ErrorMessage_Public" "400": description: Bad Request content: application/octet-stream: schema: $ref: "#/components/schemas/ErrorMessage_Public" "401": description: Unauthorized content: application/octet-stream: schema: $ref: "#/components/schemas/ErrorMessage_Public" /v1/private/traces/threads/{threadModelId}: patch: tags: - Traces summary: Update thread description: Update thread operationId: updateThread parameters: - name: threadModelId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/TraceThreadUpdate" responses: "204": description: No Content "404": description: Not found /v1/private/traces/threads/comments/{commentId}: patch: tags: - Traces summary: Update thread comment by id description: Update thread comment by id operationId: updateThreadComment parameters: - name: commentId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Comment" responses: "204": description: No Content "404": description: Not found /v1/private/traces/comments/{commentId}: patch: tags: - Traces summary: Update trace comment by id description: Update trace comment by id operationId: updateTraceComment parameters: - name: commentId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: "#/components/schemas/Comment" responses: "204": description: No Content "404": description: Not found /v1/private/welcome-wizard: get: tags: - Welcome Wizard summary: Get welcome wizard tracking status description: Get welcome wizard tracking status for the current workspace operationId: getWelcomeWizardStatus responses: "200": description: Welcome wizard tracking status content: application/json: schema: $ref: "#/components/schemas/WelcomeWizardTracking" post: tags: - Welcome Wizard summary: Submit welcome wizard description: Submit welcome wizard with user information operationId: submitWelcomeWizard requestBody: content: application/json: schema: $ref: "#/components/schemas/WelcomeWizardSubmission" responses: "204": description: Welcome wizard submitted successfully /v1/private/workspace-permissions: get: tags: - Workspace permissions summary: Get workspace permissions for the authenticated user description: Get workspace permissions for the authenticated user operationId: getWorkspaceUserPermissions responses: "200": description: Workspace Permissions content: application/json: schema: $ref: "#/components/schemas/WorkspaceUserPermissions" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/workspaces/costs/summaries: post: tags: - Workspaces summary: Get costs summary description: Get costs summary operationId: costsSummary requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricsSummaryRequest" responses: "200": description: Workspace Metrics content: application/json: schema: $ref: "#/components/schemas/Result" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/workspaces/configurations: get: tags: - Workspaces summary: Get workspace configuration description: Get workspace configuration operationId: getWorkspaceConfiguration responses: "200": description: Workspace Configuration content: application/json: schema: $ref: "#/components/schemas/WorkspaceConfiguration" "404": description: Configuration Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" put: tags: - Workspaces summary: Upsert workspace configuration description: Upsert workspace configuration operationId: upsertWorkspaceConfiguration requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkspaceConfiguration" responses: "200": description: Configuration Updated content: application/json: schema: $ref: "#/components/schemas/WorkspaceConfiguration" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" "422": description: Unprocessable Content content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" delete: tags: - Workspaces summary: Delete workspace configuration description: Delete workspace configuration operationId: deleteWorkspaceConfiguration responses: "204": description: Configuration Deleted "404": description: Configuration Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/workspaces/costs: post: tags: - Workspaces summary: Get cost daily data description: Get cost daily data operationId: getCost requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricsSummaryRequest" responses: "200": description: Workspace cost data by days content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricResponse" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" /v1/private/workspaces/metrics: post: tags: - Workspaces summary: Get metric daily data description: Get metric daily data operationId: getMetric requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricsSummaryRequest" responses: "200": description: Workspace metric data by days content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricResponse" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" deprecated: true /v1/private/workspaces/versions: get: tags: - Workspaces summary: Get workspace version description: |- Determines whether the workspace should use Opik V1 (legacy workspace-scoped) or Opik V2 (project-first) navigation. The backend is the single authority for this determination, clients must never derive the version themselves. Determination logic (priority order): 1) Feature flag override (TOGGLE_FORCE_WORKSPACE_VERSION) 2) Auth one-way V2 gate (authenticated mode only, not yet implemented) 3) Version 1 entity check (entities without project_id) 4) Fallback on failure In unauthenticated mode (authentication.enabled=false), auth steps are skipped. Called by the frontend on workspace load. operationId: getWorkspaceVersion responses: "200": description: Workspace version content: application/json: schema: $ref: "#/components/schemas/WorkspaceVersion" /v1/private/workspaces/metrics/summaries: post: tags: - Workspaces summary: Get metrics summary description: Get metrics summary operationId: metricsSummary requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricsSummaryRequest" responses: "200": description: Workspace Metrics content: application/json: schema: $ref: "#/components/schemas/WorkspaceMetricsSummaryResponse" "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorMessage" deprecated: true /v1/session/redirect/datasets: get: tags: - Redirect summary: Create dataset redirect url description: Create dataset redirect url operationId: datasetsRedirect parameters: - name: dataset_id in: query required: true schema: type: string format: uuid - name: workspace_name in: query schema: type: string - name: path in: query required: true schema: type: string responses: "303": description: Redirect "400": description: Bad Request content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" /v1/session/redirect/experiments: get: tags: - Redirect summary: Create experiment redirect url description: Create experiment redirect url operationId: experimentsRedirect parameters: - name: dataset_id in: query required: true schema: type: string format: uuid - name: experiment_id in: query required: true schema: type: string format: uuid - name: workspace_name in: query schema: type: string - name: path in: query required: true schema: type: string responses: "303": description: Redirect "400": description: Bad Request content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" /v1/session/redirect/optimizations: get: tags: - Redirect summary: Create optimization redirect url description: Create optimization redirect url operationId: optimizationsRedirect parameters: - name: dataset_id in: query required: true schema: type: string format: uuid - name: optimization_id in: query required: true schema: type: string format: uuid - name: workspace_name in: query schema: type: string - name: path in: query required: true schema: type: string responses: "303": description: Redirect "400": description: Bad Request content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" /v1/session/redirect/projects: get: tags: - Redirect summary: Create project redirect url description: Create project redirect url operationId: projectsRedirect parameters: - name: trace_id in: query required: true schema: type: string format: uuid - name: workspace_name in: query schema: type: string - name: path in: query required: true schema: type: string responses: "303": description: Redirect "400": description: Bad Request content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" "404": description: Not Found content: '*/*': schema: $ref: "#/components/schemas/ErrorMessage" /is-alive/ping: get: operationId: isAlive responses: default: description: default response content: application/json: {} /is-alive/ver: get: operationId: version responses: default: description: default response content: application/json: {} components: schemas: BiInformation: type: object properties: workspace_id: type: string user: type: string count: type: integer format: int64 BiInformationResponse: type: object properties: bi_information: type: array items: $ref: "#/components/schemas/BiInformation" SpansCountResponse: type: object properties: workspaces_spans_count: type: array items: $ref: "#/components/schemas/WorkspaceSpansCount" WorkspaceSpansCount: type: object properties: workspace: type: string span_count: type: integer format: int32 TraceCountResponse: type: object properties: workspaces_traces_count: type: array items: $ref: "#/components/schemas/WorkspaceTraceCount" WorkspaceTraceCount: type: object properties: workspace: type: string trace_count: type: integer format: int32 ErrorMessage_Write: type: object properties: errors: type: array items: type: string AgentBlueprint_Write: required: - type - values type: object properties: id: type: string format: uuid type: type: string enum: - blueprint - mask description: maxLength: 255 minLength: 0 type: string values: maxItems: 250 minItems: 1 type: array items: $ref: "#/components/schemas/AgentConfigValue_Write" AgentConfigCreate_Write: required: - blueprint type: object properties: project_id: type: string description: Project ID. Either project_id or project_name must be provided format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Project name. Either project_id or project_name must be provided id: type: string description: Agent config ID. Generated automatically if not provided format: uuid blueprint: $ref: "#/components/schemas/AgentBlueprint_Write" AgentConfigValue_Write: required: - key - type type: object properties: key: maxLength: 255 minLength: 0 type: string value: type: string type: type: string enum: - string - integer - float - boolean - prompt - prompt_commit description: type: string ErrorMessage: type: object properties: code: type: integer format: int32 message: type: string details: type: string AgentConfigEnv: required: - blueprint_id - env_name type: object properties: id: type: string format: uuid readOnly: true project_id: type: string format: uuid readOnly: true env_name: maxLength: 50 minLength: 0 type: string blueprint_id: type: string format: uuid created_by: type: string readOnly: true created_at: type: string format: date-time readOnly: true ended_at: type: string format: date-time readOnly: true AgentConfigEnvUpdate: required: - envs - project_id type: object properties: project_id: type: string format: uuid envs: maxItems: 100 minItems: 1 type: array items: $ref: "#/components/schemas/AgentConfigEnv" AgentBlueprint_Public: required: - type - values type: object properties: id: type: string format: uuid name: type: string readOnly: true type: type: string enum: - blueprint - mask description: maxLength: 255 minLength: 0 type: string envs: type: array readOnly: true items: type: string readOnly: true created_by: type: string readOnly: true created_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true values: maxItems: 250 minItems: 1 type: array items: $ref: "#/components/schemas/AgentConfigValue_Public" AgentConfigValue_Public: required: - key - type type: object properties: id: type: string format: uuid readOnly: true project_id: type: string format: uuid readOnly: true key: maxLength: 255 minLength: 0 type: string value: type: string type: type: string enum: - string - integer - float - boolean - prompt - prompt_commit description: type: string valid_from_blueprint_id: type: string format: uuid readOnly: true valid_to_blueprint_id: type: string format: uuid readOnly: true ErrorMessage_Public: type: object properties: code: type: integer format: int32 message: type: string details: type: string AgentBlueprint_History: required: - type - values type: object properties: id: type: string format: uuid name: type: string readOnly: true type: type: string enum: - blueprint - mask description: maxLength: 255 minLength: 0 type: string envs: type: array readOnly: true items: type: string readOnly: true created_by: type: string readOnly: true created_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true values: maxItems: 250 minItems: 1 type: array items: $ref: "#/components/schemas/AgentConfigValue_History" AgentConfigValue_History: required: - key - type type: object properties: id: type: string format: uuid readOnly: true project_id: type: string format: uuid readOnly: true key: maxLength: 255 minLength: 0 type: string value: type: string type: type: string enum: - string - integer - float - boolean - prompt - prompt_commit description: type: string valid_from_blueprint_id: type: string format: uuid readOnly: true valid_to_blueprint_id: type: string format: uuid readOnly: true BlueprintPage_History: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/AgentBlueprint_History" ErrorMessage_History: type: object properties: errors: type: array items: type: string AgentConfigEnvSetByName: required: - blueprint_name type: object properties: blueprint_name: type: string Alert: required: - webhook type: object properties: id: type: string format: uuid name: maxLength: 255 minLength: 0 type: string enabled: type: boolean alert_type: type: string enum: - general - slack - pagerduty metadata: type: object additionalProperties: type: string webhook: $ref: "#/components/schemas/Webhook" triggers: type: array items: $ref: "#/components/schemas/AlertTrigger" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true project_id: type: string description: "Optional project scope for this alert. When set, the alert\ \ is scoped to the specified project. Do NOT also provide a 'scope:project'\ \ trigger config — the system will create it automatically from this field.\ \ Sending both project_id and a scope:project trigger config will result\ \ in an error." format: uuid AlertTrigger: required: - event_type type: object properties: id: type: string format: uuid alert_id: type: string format: uuid readOnly: true event_type: type: string enum: - trace:errors - trace:feedback_score - trace_thread:feedback_score - prompt:created - prompt:committed - trace:guardrails_triggered - prompt:deleted - experiment:finished - trace:cost - trace:latency trigger_configs: type: array items: $ref: "#/components/schemas/AlertTriggerConfig" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true AlertTriggerConfig: required: - type type: object properties: id: type: string format: uuid alert_trigger_id: type: string format: uuid readOnly: true type: type: string enum: - scope:project - threshold:feedback_score - threshold:cost - threshold:latency - threshold:errors config_value: type: object additionalProperties: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true Webhook: required: - url type: object properties: id: type: string format: uuid name: type: string url: minLength: 1 type: string secret_token: maxLength: 250 minLength: 0 type: string headers: type: object additionalProperties: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true AlertTriggerConfig_Write: required: - type type: object properties: id: type: string format: uuid type: type: string enum: - scope:project - threshold:feedback_score - threshold:cost - threshold:latency - threshold:errors config_value: type: object additionalProperties: type: string AlertTrigger_Write: required: - event_type type: object properties: id: type: string format: uuid event_type: type: string enum: - trace:errors - trace:feedback_score - trace_thread:feedback_score - prompt:created - prompt:committed - trace:guardrails_triggered - prompt:deleted - experiment:finished - trace:cost - trace:latency trigger_configs: type: array items: $ref: "#/components/schemas/AlertTriggerConfig_Write" Alert_Write: required: - webhook type: object properties: id: type: string format: uuid name: maxLength: 255 minLength: 0 type: string enabled: type: boolean alert_type: type: string enum: - general - slack - pagerduty metadata: type: object additionalProperties: type: string webhook: $ref: "#/components/schemas/Webhook_Write" triggers: type: array items: $ref: "#/components/schemas/AlertTrigger_Write" project_id: type: string description: "Optional project scope for this alert. When set, the alert\ \ is scoped to the specified project. Do NOT also provide a 'scope:project'\ \ trigger config — the system will create it automatically from this field.\ \ Sending both project_id and a scope:project trigger config will result\ \ in an error." format: uuid Webhook_Write: required: - url type: object properties: id: type: string format: uuid name: type: string url: minLength: 1 type: string secret_token: maxLength: 250 minLength: 0 type: string headers: type: object additionalProperties: type: string BatchDelete: required: - ids type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: type: string format: uuid AlertPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Alert_Public" sortable_by: type: array items: type: string AlertTriggerConfig_Public: required: - type type: object properties: id: type: string format: uuid alert_trigger_id: type: string format: uuid readOnly: true type: type: string enum: - scope:project - threshold:feedback_score - threshold:cost - threshold:latency - threshold:errors config_value: type: object additionalProperties: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true AlertTrigger_Public: required: - event_type type: object properties: id: type: string format: uuid alert_id: type: string format: uuid readOnly: true event_type: type: string enum: - trace:errors - trace:feedback_score - trace_thread:feedback_score - prompt:created - prompt:committed - trace:guardrails_triggered - prompt:deleted - experiment:finished - trace:cost - trace:latency trigger_configs: type: array items: $ref: "#/components/schemas/AlertTriggerConfig_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true Alert_Public: required: - webhook type: object properties: id: type: string format: uuid name: maxLength: 255 minLength: 0 type: string enabled: type: boolean alert_type: type: string enum: - general - slack - pagerduty metadata: type: object additionalProperties: type: string webhook: $ref: "#/components/schemas/Webhook_Public" triggers: type: array items: $ref: "#/components/schemas/AlertTrigger_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true project_id: type: string description: "Optional project scope for this alert. When set, the alert\ \ is scoped to the specified project. Do NOT also provide a 'scope:project'\ \ trigger config — the system will create it automatically from this field.\ \ Sending both project_id and a scope:project trigger config will result\ \ in an error." format: uuid Webhook_Public: required: - url type: object properties: id: type: string format: uuid name: type: string url: minLength: 1 type: string secret_token: maxLength: 250 minLength: 0 type: string headers: type: object additionalProperties: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true WebhookExamples: type: object properties: response_examples: type: object additionalProperties: type: object WebhookTestResult: type: object properties: status: type: string enum: - success - failure status_code: type: integer format: int32 request_body: type: string error_message: type: string AnnotationQueueItemIds: required: - ids type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: type: string format: uuid AnnotationQueue: required: - name - project_id - scope type: object properties: id: type: string format: uuid project_id: type: string format: uuid project_name: type: string readOnly: true name: minLength: 1 type: string description: type: string instructions: type: string scope: type: string enum: - trace - thread comments_enabled: type: boolean feedback_definition_names: type: array items: type: string reviewers: type: array readOnly: true items: $ref: "#/components/schemas/AnnotationQueueReviewer" feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage" items_count: type: integer format: int64 readOnly: true created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true description: List of annotation queues to create AnnotationQueueReviewer: type: object properties: username: type: string status: type: integer format: int64 readOnly: true FeedbackScoreAverage: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number AnnotationQueue_Write: required: - name - project_id - scope type: object properties: id: type: string format: uuid project_id: type: string format: uuid name: minLength: 1 type: string description: type: string instructions: type: string scope: type: string enum: - trace - thread comments_enabled: type: boolean feedback_definition_names: type: array items: type: string description: List of annotation queues to create AnnotationQueueBatch: required: - annotation_queues type: object properties: annotation_queues: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of annotation queues to create items: $ref: "#/components/schemas/AnnotationQueue" description: Batch of annotation queues to create AnnotationQueueBatch_Write: required: - annotation_queues type: object properties: annotation_queues: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of annotation queues to create items: $ref: "#/components/schemas/AnnotationQueue_Write" description: Batch of annotation queues to create AnnotationQueuePage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/AnnotationQueue_Public" sortableBy: type: array items: type: string AnnotationQueueReviewer_Public: type: object properties: username: type: string status: type: integer format: int64 readOnly: true AnnotationQueue_Public: required: - name - project_id - scope type: object properties: id: type: string format: uuid project_id: type: string format: uuid project_name: type: string readOnly: true name: minLength: 1 type: string description: type: string instructions: type: string scope: type: string enum: - trace - thread comments_enabled: type: boolean feedback_definition_names: type: array items: type: string reviewers: type: array readOnly: true items: $ref: "#/components/schemas/AnnotationQueueReviewer_Public" feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage_Public" items_count: type: integer format: int64 readOnly: true created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true FeedbackScoreAverage_Public: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number readOnly: true AnnotationQueueUpdate: type: object properties: name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: type: string instructions: type: string comments_enabled: type: boolean feedback_definition_names: type: array items: minLength: 1 type: string AssistantSidebarConfigResponse: type: object properties: enabled: type: boolean manifest_url: type: string Attachment: required: - file_name - file_size - mime_type type: object properties: link: type: string file_name: type: string file_size: type: integer format: int64 mime_type: type: string AttachmentPage: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Attachment" sortableBy: type: array items: type: string CompleteMultipartUploadRequest: required: - entity_id - entity_type - file_name - file_size - upload_id - uploaded_file_parts type: object properties: file_name: minLength: 1 type: string project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" entity_type: type: string enum: - trace - span entity_id: type: string format: uuid container_id: type: string format: uuid readOnly: true file_size: type: integer format: int64 mime_type: type: string upload_id: minLength: 1 type: string uploaded_file_parts: type: array items: $ref: "#/components/schemas/MultipartUploadPart" MultipartUploadPart: required: - e_tag - part_number type: object properties: e_tag: minLength: 1 type: string part_number: type: integer format: int32 DeleteAttachmentsRequest: required: - container_id - entity_id - entity_type - file_names type: object properties: file_names: uniqueItems: true type: array items: type: string entity_type: type: string enum: - trace - span entity_id: type: string format: uuid container_id: type: string format: uuid StartMultipartUploadResponse: required: - pre_sign_urls - upload_id type: object properties: upload_id: minLength: 1 type: string pre_sign_urls: type: array items: type: string StartMultipartUploadRequest: required: - entity_id - entity_type - file_name - num_of_file_parts - path type: object properties: file_name: minLength: 1 type: string num_of_file_parts: type: integer format: int32 mime_type: type: string project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" entity_type: type: string enum: - trace - span entity_id: type: string format: uuid container_id: type: string format: uuid readOnly: true path: minLength: 1 type: string AuthDetailsHolder: type: object WorkspaceNameHolder: type: object properties: workspace_name: type: string AudioUrl: required: - url type: object properties: url: type: string AutomationRuleEvaluator: required: - action - name - type type: object properties: id: type: string format: uuid readOnly: true project_id: type: string description: Primary project ID (legacy field for backwards compatibility) format: uuid project_name: type: string description: Primary project name (legacy field for backwards compatibility) readOnly: true projects: uniqueItems: true type: array description: "Projects assigned to this rule (unique, sorted alphabetically\ \ by name)" readOnly: true items: $ref: "#/components/schemas/ProjectReference" project_ids: uniqueItems: true type: array description: Project IDs for write operations (used when creating/updating rules) items: type: string description: Project IDs for write operations (used when creating/updating rules) format: uuid name: minLength: 1 type: string sampling_rate: type: number format: float enabled: type: boolean created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true type: type: string enum: - llm_as_judge - user_defined_metric_python - trace_thread_llm_as_judge - trace_thread_user_defined_metric_python - span_llm_as_judge - span_user_defined_metric_python action: type: string enum: - evaluator discriminator: propertyName: type mapping: llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge" user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython" trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge" trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython" span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge" span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython" AutomationRuleEvaluatorLlmAsJudge: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter" code: $ref: "#/components/schemas/LlmAsJudgeCode" AutomationRuleEvaluatorSpanLlmAsJudge: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter" code: $ref: "#/components/schemas/SpanLlmAsJudgeCode" AutomationRuleEvaluatorSpanUserDefinedMetricPython: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter" code: $ref: "#/components/schemas/SpanUserDefinedMetricPythonCode" AutomationRuleEvaluatorTraceThreadLlmAsJudge: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter" code: $ref: "#/components/schemas/TraceThreadLlmAsJudgeCode" AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter" code: $ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode" AutomationRuleEvaluatorUserDefinedMetricPython: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter" code: $ref: "#/components/schemas/UserDefinedMetricPythonCode" ImageUrl: required: - url type: object properties: url: type: string detail: type: string JsonNode: type: object LlmAsJudgeCode: required: - messages - model - schema - variables type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage" variables: type: object additionalProperties: type: string schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema" LlmAsJudgeMessage: required: - role type: object properties: role: type: string enum: - SYSTEM - USER - AI - TOOL_EXECUTION_RESULT - CUSTOM content: type: string content_array: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessageContent" string_content: type: boolean structured_content: type: boolean LlmAsJudgeMessageContent: required: - type type: object properties: type: type: string text: type: string image_url: $ref: "#/components/schemas/ImageUrl" video_url: $ref: "#/components/schemas/VideoUrl" audio_url: $ref: "#/components/schemas/AudioUrl" LlmAsJudgeModelParameters: required: - name - temperature type: object properties: name: type: string temperature: type: number format: double seed: type: integer format: int32 custom_parameters: $ref: "#/components/schemas/JsonNode" LlmAsJudgeOutputSchema: required: - description - name - type type: object properties: name: type: string type: type: string enum: - BOOLEAN - INTEGER - DOUBLE description: type: string ProjectReference: required: - project_id - project_name type: object properties: project_id: type: string description: Project ID format: uuid project_name: type: string description: Project name description: Project reference with ID and name readOnly: true SpanFilter: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string SpanLlmAsJudgeCode: required: - messages - model - schema - variables type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage" variables: type: object additionalProperties: type: string schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema" SpanUserDefinedMetricPythonCode: required: - arguments - metric type: object properties: metric: type: string arguments: minProperties: 1 type: object additionalProperties: type: string TraceFilter: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string TraceThreadFilter: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string TraceThreadLlmAsJudgeCode: required: - messages - model - schema type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage" schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema" TraceThreadUserDefinedMetricPythonCode: required: - metric type: object properties: metric: type: string UserDefinedMetricPythonCode: required: - arguments - metric type: object properties: metric: type: string arguments: minProperties: 1 type: object additionalProperties: type: string VideoUrl: required: - url type: object properties: url: type: string AudioUrl_Write: required: - url type: object properties: url: type: string AutomationRuleEvaluatorLlmAsJudge_Write: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Write" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter_Write" code: $ref: "#/components/schemas/LlmAsJudgeCode_Write" AutomationRuleEvaluatorSpanLlmAsJudge_Write: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Write" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter_Write" code: $ref: "#/components/schemas/SpanLlmAsJudgeCode_Write" AutomationRuleEvaluatorSpanUserDefinedMetricPython_Write: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Write" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter_Write" code: $ref: "#/components/schemas/SpanUserDefinedMetricPythonCode_Write" AutomationRuleEvaluatorTraceThreadLlmAsJudge_Write: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Write" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter_Write" code: $ref: "#/components/schemas/TraceThreadLlmAsJudgeCode_Write" AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Write: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Write" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter_Write" code: $ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode_Write" AutomationRuleEvaluatorUserDefinedMetricPython_Write: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Write" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter_Write" code: $ref: "#/components/schemas/UserDefinedMetricPythonCode_Write" AutomationRuleEvaluator_Write: required: - action - name - type type: object properties: project_id: type: string description: Primary project ID (legacy field for backwards compatibility) format: uuid project_ids: uniqueItems: true type: array description: Project IDs for write operations (used when creating/updating rules) items: type: string description: Project IDs for write operations (used when creating/updating rules) format: uuid name: minLength: 1 type: string sampling_rate: type: number format: float enabled: type: boolean type: type: string enum: - llm_as_judge - user_defined_metric_python - trace_thread_llm_as_judge - trace_thread_user_defined_metric_python - span_llm_as_judge - span_user_defined_metric_python action: type: string enum: - evaluator discriminator: propertyName: type mapping: llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Write" user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Write" trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Write" trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Write" span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Write" span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Write" ImageUrl_Write: required: - url type: object properties: url: type: string detail: type: string JsonNode_Write: type: object LlmAsJudgeCode_Write: required: - messages - model - schema - variables type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters_Write" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage_Write" variables: type: object additionalProperties: type: string schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema_Write" LlmAsJudgeMessageContent_Write: required: - type type: object properties: type: type: string text: type: string image_url: $ref: "#/components/schemas/ImageUrl_Write" video_url: $ref: "#/components/schemas/VideoUrl_Write" audio_url: $ref: "#/components/schemas/AudioUrl_Write" LlmAsJudgeMessage_Write: required: - role type: object properties: role: type: string enum: - SYSTEM - USER - AI - TOOL_EXECUTION_RESULT - CUSTOM content: type: string content_array: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessageContent_Write" string_content: type: boolean structured_content: type: boolean LlmAsJudgeModelParameters_Write: required: - name - temperature type: object properties: name: type: string temperature: type: number format: double seed: type: integer format: int32 custom_parameters: $ref: "#/components/schemas/JsonNode_Write" LlmAsJudgeOutputSchema_Write: required: - description - name - type type: object properties: name: type: string type: type: string enum: - BOOLEAN - INTEGER - DOUBLE description: type: string SpanFilter_Write: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string SpanLlmAsJudgeCode_Write: required: - messages - model - schema - variables type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters_Write" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage_Write" variables: type: object additionalProperties: type: string schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema_Write" SpanUserDefinedMetricPythonCode_Write: required: - arguments - metric type: object properties: metric: type: string arguments: minProperties: 1 type: object additionalProperties: type: string TraceFilter_Write: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string TraceThreadFilter_Write: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string TraceThreadLlmAsJudgeCode_Write: required: - messages - model - schema type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters_Write" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage_Write" schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema_Write" TraceThreadUserDefinedMetricPythonCode_Write: required: - metric type: object properties: metric: type: string UserDefinedMetricPythonCode_Write: required: - arguments - metric type: object properties: metric: type: string arguments: minProperties: 1 type: object additionalProperties: type: string VideoUrl_Write: required: - url type: object properties: url: type: string AudioUrl_Public: required: - url type: object properties: url: type: string AutomationRuleEvaluatorLlmAsJudge_Public: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Public" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter_Public" code: $ref: "#/components/schemas/LlmAsJudgeCode_Public" AutomationRuleEvaluatorObjectObject_Public: required: - action - name - type type: object properties: id: type: string format: uuid readOnly: true project_id: type: string description: Primary project ID (legacy field for backwards compatibility) format: uuid project_name: type: string description: Primary project name (legacy field for backwards compatibility) readOnly: true projects: uniqueItems: true type: array description: "Projects assigned to this rule (unique, sorted alphabetically\ \ by name)" readOnly: true items: $ref: "#/components/schemas/ProjectReference_Public" name: minLength: 1 type: string sampling_rate: type: number format: float enabled: type: boolean created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true type: type: string enum: - llm_as_judge - user_defined_metric_python - trace_thread_llm_as_judge - trace_thread_user_defined_metric_python - span_llm_as_judge - span_user_defined_metric_python action: type: string enum: - evaluator discriminator: propertyName: type mapping: llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Public" user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Public" trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public" trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public" span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Public" span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public" AutomationRuleEvaluatorPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/AutomationRuleEvaluatorObjectObject_Public" sortable_by: type: array items: type: string AutomationRuleEvaluatorSpanLlmAsJudge_Public: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Public" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter_Public" code: $ref: "#/components/schemas/SpanLlmAsJudgeCode_Public" AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Public" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter_Public" code: $ref: "#/components/schemas/SpanUserDefinedMetricPythonCode_Public" AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Public" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter_Public" code: $ref: "#/components/schemas/TraceThreadLlmAsJudgeCode_Public" AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Public" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter_Public" code: $ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode_Public" AutomationRuleEvaluatorUserDefinedMetricPython_Public: required: - action - code - name - type type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluator_Public" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter_Public" code: $ref: "#/components/schemas/UserDefinedMetricPythonCode_Public" ImageUrl_Public: required: - url type: object properties: url: type: string detail: type: string JsonNode_Public: type: object LlmAsJudgeCode_Public: required: - messages - model - schema - variables type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters_Public" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage_Public" variables: type: object additionalProperties: type: string schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema_Public" LlmAsJudgeMessageContent_Public: required: - type type: object properties: type: type: string text: type: string image_url: $ref: "#/components/schemas/ImageUrl_Public" video_url: $ref: "#/components/schemas/VideoUrl_Public" audio_url: $ref: "#/components/schemas/AudioUrl_Public" LlmAsJudgeMessage_Public: required: - role type: object properties: role: type: string enum: - SYSTEM - USER - AI - TOOL_EXECUTION_RESULT - CUSTOM content: type: string content_array: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessageContent_Public" string_content: type: boolean structured_content: type: boolean LlmAsJudgeModelParameters_Public: required: - name - temperature type: object properties: name: type: string temperature: type: number format: double seed: type: integer format: int32 custom_parameters: $ref: "#/components/schemas/JsonNode_Public" LlmAsJudgeOutputSchema_Public: required: - description - name - type type: object properties: name: type: string type: type: string enum: - BOOLEAN - INTEGER - DOUBLE description: type: string ProjectReference_Public: required: - project_id - project_name type: object properties: project_id: type: string description: Project ID format: uuid project_name: type: string description: Project name description: Project reference with ID and name readOnly: true SpanFilter_Public: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string SpanLlmAsJudgeCode_Public: required: - messages - model - schema - variables type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters_Public" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage_Public" variables: type: object additionalProperties: type: string schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema_Public" SpanUserDefinedMetricPythonCode_Public: required: - arguments - metric type: object properties: metric: type: string arguments: minProperties: 1 type: object additionalProperties: type: string TraceFilter_Public: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string TraceThreadFilter_Public: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string TraceThreadLlmAsJudgeCode_Public: required: - messages - model - schema type: object properties: model: $ref: "#/components/schemas/LlmAsJudgeModelParameters_Public" messages: type: array items: $ref: "#/components/schemas/LlmAsJudgeMessage_Public" schema: type: array items: $ref: "#/components/schemas/LlmAsJudgeOutputSchema_Public" TraceThreadUserDefinedMetricPythonCode_Public: required: - metric type: object properties: metric: type: string UserDefinedMetricPythonCode_Public: required: - arguments - metric type: object properties: metric: type: string arguments: minProperties: 1 type: object additionalProperties: type: string VideoUrl_Public: required: - url type: object properties: url: type: string AutomationRuleEvaluator_Public: required: - action - name - type type: object properties: id: type: string format: uuid readOnly: true project_id: type: string description: Primary project ID (legacy field for backwards compatibility) format: uuid project_name: type: string description: Primary project name (legacy field for backwards compatibility) readOnly: true projects: uniqueItems: true type: array description: "Projects assigned to this rule (unique, sorted alphabetically\ \ by name)" readOnly: true items: $ref: "#/components/schemas/ProjectReference_Public" name: minLength: 1 type: string sampling_rate: type: number format: float enabled: type: boolean created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true type: type: string enum: - llm_as_judge - user_defined_metric_python - trace_thread_llm_as_judge - trace_thread_user_defined_metric_python - span_llm_as_judge - span_user_defined_metric_python action: type: string enum: - evaluator discriminator: propertyName: type mapping: llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Public" user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Public" trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public" trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public" span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Public" span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public" LogItem: type: object properties: timestamp: type: string format: date-time readOnly: true rule_id: type: string format: uuid readOnly: true level: type: string readOnly: true enum: - INFO - WARN - ERROR - DEBUG - TRACE message: type: string readOnly: true markers: type: object additionalProperties: type: string readOnly: true readOnly: true LogPage: type: object properties: content: type: array items: $ref: "#/components/schemas/LogItem" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 AutomationRuleEvaluatorUpdate: required: - action - name type: object properties: name: minLength: 1 type: string sampling_rate: type: number format: float enabled: type: boolean project_id: type: string description: "Primary project ID (legacy field, maintained for backwards\ \ compatibility)" format: uuid project_ids: uniqueItems: true type: array description: Multiple project IDs (new field for multi-project support) items: type: string description: Multiple project IDs (new field for multi-project support) format: uuid type: type: string enum: - llm_as_judge - user_defined_metric_python - trace_thread_llm_as_judge - trace_thread_user_defined_metric_python - span_llm_as_judge - span_user_defined_metric_python action: type: string enum: - evaluator discriminator: propertyName: type mapping: llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorUpdateLlmAsJudge" user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUpdateUserDefinedMetricPython" trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorUpdateTraceThreadLlmAsJudge" trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUpdateTraceThreadUserDefinedMetricPython" span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorUpdateSpanLlmAsJudge" span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUpdateSpanUserDefinedMetricPython" AutomationRuleEvaluatorUpdateLlmAsJudge: required: - action - code - name type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter" code: $ref: "#/components/schemas/LlmAsJudgeCode" AutomationRuleEvaluatorUpdateSpanLlmAsJudge: required: - action - code - name type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter" code: $ref: "#/components/schemas/SpanLlmAsJudgeCode" AutomationRuleEvaluatorUpdateSpanUserDefinedMetricPython: required: - action - code - name type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" - type: object properties: filters: type: array items: $ref: "#/components/schemas/SpanFilter" code: $ref: "#/components/schemas/SpanUserDefinedMetricPythonCode" AutomationRuleEvaluatorUpdateTraceThreadLlmAsJudge: required: - action - code - name type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter" code: $ref: "#/components/schemas/TraceThreadLlmAsJudgeCode" AutomationRuleEvaluatorUpdateTraceThreadUserDefinedMetricPython: required: - action - code - name type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter" code: $ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode" AutomationRuleEvaluatorUpdateUserDefinedMetricPython: required: - action - code - name type: object allOf: - $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate" - type: object properties: filters: type: array items: $ref: "#/components/schemas/TraceFilter" code: $ref: "#/components/schemas/UserDefinedMetricPythonCode" AssistantMessage: type: object properties: role: type: string enum: - system - user - assistant - tool - function content: type: string reasoning_content: type: string name: type: string tool_calls: type: array items: $ref: "#/components/schemas/ToolCall" refusal: type: string function_call: $ref: "#/components/schemas/FunctionCall" ChatCompletionChoice: type: object properties: index: type: integer format: int32 message: $ref: "#/components/schemas/AssistantMessage" delta: $ref: "#/components/schemas/Delta" finish_reason: type: string ChatCompletionResponse: type: object properties: id: type: string created: type: integer format: int64 model: type: string choices: type: array items: $ref: "#/components/schemas/ChatCompletionChoice" usage: $ref: "#/components/schemas/Usage" system_fingerprint: type: string service_tier: type: string CompletionTokensDetails: type: object properties: reasoning_tokens: type: integer format: int32 Delta: type: object properties: role: type: string content: type: string reasoning_content: type: string tool_calls: type: array items: $ref: "#/components/schemas/ToolCall" function_call: $ref: "#/components/schemas/FunctionCall" FunctionCall: type: object properties: name: type: string arguments: type: string PromptTokensDetails: type: object properties: cached_tokens: type: integer format: int32 ToolCall: type: object properties: id: type: string index: type: integer format: int32 type: type: string enum: - function function: $ref: "#/components/schemas/FunctionCall" Usage: type: object properties: total_tokens: type: integer format: int32 prompt_tokens: type: integer format: int32 prompt_tokens_details: $ref: "#/components/schemas/PromptTokensDetails" completion_tokens: type: integer format: int32 completion_tokens_details: $ref: "#/components/schemas/CompletionTokensDetails" ChatCompletionRequest: type: object properties: model: type: string messages: type: array items: $ref: "#/components/schemas/Message" temperature: type: number format: double top_p: type: number format: double "n": type: integer format: int32 stream: type: boolean stream_options: $ref: "#/components/schemas/StreamOptions" stop: type: array items: type: string max_tokens: type: integer format: int32 max_completion_tokens: type: integer format: int32 presence_penalty: type: number format: double frequency_penalty: type: number format: double logit_bias: type: object additionalProperties: type: integer format: int32 user: type: string response_format: $ref: "#/components/schemas/ResponseFormat" seed: type: integer format: int32 tools: type: array items: $ref: "#/components/schemas/Tool" tool_choice: type: object parallel_tool_calls: type: boolean store: type: boolean metadata: type: object additionalProperties: type: string reasoning_effort: type: string service_tier: type: string functions: type: array items: $ref: "#/components/schemas/Function" function_call: $ref: "#/components/schemas/FunctionCall" Function: type: object properties: name: type: string description: type: string strict: type: boolean parameters: type: object additionalProperties: type: object JsonSchema: type: object properties: name: type: string strict: type: boolean schema: type: object additionalProperties: type: object Message: type: object ResponseFormat: type: object properties: type: type: string enum: - text - json_object - json_schema json_schema: $ref: "#/components/schemas/JsonSchema" StreamOptions: type: object properties: include_usage: type: boolean Tool: type: object properties: type: type: string enum: - function function: $ref: "#/components/schemas/Function" Dashboard_Public: required: - config - name type: object properties: id: type: string format: uuid readOnly: true workspace_id: type: string readOnly: true project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid name: maxLength: 120 minLength: 1 type: string slug: type: string readOnly: true type: type: string enum: - multi_project - experiments scope: type: string readOnly: true enum: - workspace - insights description: maxLength: 1000 minLength: 0 type: string config: $ref: "#/components/schemas/JsonNode_Public" created_by: type: string readOnly: true last_updated_by: type: string readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true Dashboard_Write: required: - config - name type: object properties: project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "For project scope, specify either project_id or project_name.\ \ If project_name is provided and the project does not exist, it will\ \ be created. Ignored when project_id is provided. If neither is provided,\ \ the dashboard is created at workspace level." name: maxLength: 120 minLength: 1 type: string type: type: string enum: - multi_project - experiments description: maxLength: 1000 minLength: 0 type: string config: $ref: "#/components/schemas/JsonNode_Write" DashboardPage_Public: type: object properties: content: type: array items: $ref: "#/components/schemas/Dashboard_Public" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 sortable_by: type: array items: type: string DashboardUpdate_Public: type: object properties: name: maxLength: 120 minLength: 1 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string type: type: string enum: - multi_project - experiments description: maxLength: 1000 minLength: 0 type: string config: $ref: "#/components/schemas/JsonNode_Public" DatasetVersion_Public: type: object properties: id: type: string format: uuid readOnly: true dataset_id: type: string format: uuid readOnly: true version_hash: type: string readOnly: true tags: uniqueItems: true type: array readOnly: true items: type: string readOnly: true is_latest: type: boolean description: Indicates whether this is the latest version of the dataset readOnly: true version_name: type: string description: "Sequential version name formatted as 'v1', 'v2', etc." readOnly: true items_total: type: integer description: Total number of items in this version format: int32 readOnly: true items_added: type: integer description: Number of items added since last version format: int32 readOnly: true items_modified: type: integer description: Number of items modified since last version format: int32 readOnly: true items_deleted: type: integer description: Number of items deleted since last version format: int32 readOnly: true change_description: type: string readOnly: true metadata: type: object additionalProperties: type: string readOnly: true readOnly: true evaluators: type: array description: Default evaluators for items in this version readOnly: true items: $ref: "#/components/schemas/EvaluatorItem_Public" execution_policy: $ref: "#/components/schemas/ExecutionPolicy_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true EvaluatorItem_Public: required: - config - name - type type: object properties: name: minLength: 1 type: string type: type: string enum: - llm_judge - code_metric config: $ref: "#/components/schemas/JsonNode_Public" description: Default evaluators for items in this version readOnly: true ExecutionPolicy_Public: type: object properties: runs_per_item: maximum: 100 minimum: 1 type: integer format: int32 pass_threshold: maximum: 100 minimum: 1 type: integer format: int32 description: Default execution policy for items in this version readOnly: true DatasetItemChanges_Public: type: object DatasetItemBatchUpdate: required: - update type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of dataset item IDs to update (max 1000). Mutually exclusive with 'filters'. items: type: string description: List of dataset item IDs to update (max 1000). Mutually exclusive with 'filters'. format: uuid filters: type: array items: $ref: "#/components/schemas/DatasetItemFilter" dataset_id: type: string description: "Dataset ID. Required when using 'filters', optional when using\ \ 'ids'." format: uuid update: $ref: "#/components/schemas/DatasetItemUpdate" merge_tags: type: boolean description: "If true, merge tags with existing tags instead of replacing\ \ them. Default: false. When using 'filters', this is automatically set\ \ to true." description: Request to batch update multiple dataset items DatasetItemFilter: type: object properties: field: type: string operator: type: string enum: - contains - not_contains - starts_with - ends_with - = - '!=' - '>' - '>=' - < - <= - is_empty - is_not_empty key: type: string value: type: string description: Filters to select dataset items to delete within the specified dataset. Must be used with 'dataset_id'. Mutually exclusive with 'item_ids'. Empty array means 'delete all items in the dataset'. DatasetItemUpdate: type: object properties: input: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Dataset item input expected_output: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Dataset item expected output metadata: $ref: "#/components/schemas/JsonNode" data: $ref: "#/components/schemas/JsonNode" description: type: string description: Dataset item description tags: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags items: maxLength: 100 minLength: 0 type: string description: Tags tags_to_add: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to add items: maxLength: 100 minLength: 0 type: string description: Tags to add tags_to_remove: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to remove items: maxLength: 100 minLength: 0 type: string description: Tags to remove evaluators: type: array description: Evaluators items: $ref: "#/components/schemas/EvaluatorItem" execution_policy: $ref: "#/components/schemas/ExecutionPolicy" clear_execution_policy: type: boolean description: "When true, clears the item-level execution policy (falls back\ \ to dataset-level)" description: Dataset item update request EvaluatorItem: required: - config - name - type type: object properties: name: minLength: 1 type: string type: type: string enum: - llm_judge - code_metric config: $ref: "#/components/schemas/JsonNode" ExecutionPolicy: type: object properties: runs_per_item: maximum: 100 minimum: 1 type: integer format: int32 pass_threshold: maximum: 100 minimum: 1 type: integer format: int32 Dataset: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "For project scope, specify either project_id or project_name.\ \ If project_name is provided and the project does not exist, it will\ \ be created. Ignored when project_id is provided. If neither is provided,\ \ the dataset is created at workspace level." type: type: string enum: - dataset - evaluation_suite visibility: type: string enum: - private - public tags: uniqueItems: true type: array items: type: string description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true experiment_count: type: integer format: int64 readOnly: true dataset_items_count: type: integer format: int64 readOnly: true optimization_count: type: integer format: int64 readOnly: true most_recent_experiment_at: type: string format: date-time readOnly: true last_created_experiment_at: type: string format: date-time readOnly: true most_recent_optimization_at: type: string format: date-time readOnly: true last_created_optimization_at: type: string format: date-time readOnly: true status: type: string readOnly: true enum: - unknown - processing - completed - failed latest_version: $ref: "#/components/schemas/DatasetVersionSummary" DatasetVersionSummary: type: object properties: id: type: string description: Unique identifier of the version format: uuid version_hash: type: string description: Hash of the version content version_name: type: string description: "Sequential version name formatted as 'v1', 'v2', etc." change_description: type: string description: Description of changes in this version tags: uniqueItems: true type: array description: Tags associated with this version items: type: string description: Tags associated with this version description: Summary of the latest dataset version readOnly: true Dataset_Write: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "For project scope, specify either project_id or project_name.\ \ If project_name is provided and the project does not exist, it will\ \ be created. Ignored when project_id is provided. If neither is provided,\ \ the dataset is created at workspace level." type: type: string enum: - dataset - evaluation_suite visibility: type: string enum: - private - public tags: uniqueItems: true type: array items: type: string description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string AssertionResult: type: object properties: value: type: string passed: type: boolean reason: type: string readOnly: true Comment: required: - text type: object properties: id: type: string format: uuid readOnly: true text: minLength: 1 type: string created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true DatasetItem: required: - data - source type: object properties: id: type: string description: | Stable item identifier. On write, used as the upsert key. If omitted, a new ID is generated. Remains the same across dataset versions format: uuid dataset_item_id: type: string description: | Deprecated. Always equals 'id'. Retained for backward compatibility and will be removed in a future version format: uuid readOnly: true trace_id: type: string format: uuid span_id: type: string format: uuid source: type: string enum: - manual - trace - span - sdk data: $ref: "#/components/schemas/JsonNode" description: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string tags: uniqueItems: true type: array items: type: string evaluators: type: array items: $ref: "#/components/schemas/EvaluatorItem" execution_policy: $ref: "#/components/schemas/ExecutionPolicy" experiment_items: type: array readOnly: true items: $ref: "#/components/schemas/ExperimentItem" run_summaries_by_experiment: type: object additionalProperties: $ref: "#/components/schemas/ExperimentRunSummary" readOnly: true dataset_id: type: string format: uuid readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true DatasetItemBatch: required: - items type: object properties: dataset_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, dataset_id must be provided" dataset_id: type: string description: "If null, dataset_name must be provided" format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Optional. Associates the batch with a project by name. Ignored if project_id is provided. project_id: type: string description: Optional. Associates the batch with a project by ID. Takes precedence over project_name. format: uuid items: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/DatasetItem" batch_group_id: type: string description: "Optional batch group ID to group multiple batches into a single\ \ dataset version. If null, mutates the latest version instead of creating\ \ a new one." format: uuid ExperimentItem: required: - dataset_item_id - experiment_id - trace_id type: object properties: id: type: string format: uuid experiment_id: type: string format: uuid dataset_item_id: type: string format: uuid trace_id: type: string format: uuid project_id: type: string format: uuid readOnly: true project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string input: $ref: "#/components/schemas/JsonListString" output: $ref: "#/components/schemas/JsonListString" feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScore" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment" total_estimated_cost: type: number readOnly: true duration: type: number format: double readOnly: true usage: type: object additionalProperties: type: integer format: int64 readOnly: true readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true trace_visibility_mode: type: string readOnly: true enum: - default - hidden description: type: string readOnly: true assertion_results: type: array readOnly: true items: $ref: "#/components/schemas/AssertionResult" status: type: string readOnly: true enum: - passed - failed ExperimentRunSummary: type: object properties: passed_runs: type: integer format: int32 total_runs: type: integer format: int32 status: type: string enum: - passed - failed readOnly: true FeedbackScore: required: - name - source - value type: object properties: name: minLength: 1 type: string category_name: type: string value: maximum: 999999999.999999999 exclusiveMaximum: false minimum: -999999999.999999999 exclusiveMinimum: false type: number reason: type: string source: type: string enum: - ui - sdk - online_scoring created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true value_by_author: type: object additionalProperties: $ref: "#/components/schemas/ValueEntry" readOnly: true JsonListString: type: object anyOf: - type: object - type: array items: type: object - type: string ValueEntry: type: object properties: value: type: number reason: type: string category_name: type: string source: type: string enum: - ui - sdk - online_scoring last_updated_at: type: string format: date-time span_type: type: string span_id: type: string readOnly: true DatasetItemBatch_Write: required: - items type: object properties: dataset_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, dataset_id must be provided" dataset_id: type: string description: "If null, dataset_name must be provided" format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Optional. Associates the batch with a project by name. Ignored if project_id is provided. project_id: type: string description: Optional. Associates the batch with a project by ID. Takes precedence over project_name. format: uuid items: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/DatasetItem_Write" batch_group_id: type: string description: "Optional batch group ID to group multiple batches into a single\ \ dataset version. If null, mutates the latest version instead of creating\ \ a new one." format: uuid DatasetItem_Write: required: - data - source type: object properties: id: type: string description: | Stable item identifier. On write, used as the upsert key. If omitted, a new ID is generated. Remains the same across dataset versions format: uuid trace_id: type: string format: uuid span_id: type: string format: uuid source: type: string enum: - manual - trace - span - sdk data: $ref: "#/components/schemas/JsonNode" description: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string tags: uniqueItems: true type: array items: type: string evaluators: type: array items: $ref: "#/components/schemas/EvaluatorItem_Write" execution_policy: $ref: "#/components/schemas/ExecutionPolicy_Write" EvaluatorItem_Write: required: - config - name - type type: object properties: name: minLength: 1 type: string type: type: string enum: - llm_judge - code_metric config: $ref: "#/components/schemas/JsonNode_Write" ExecutionPolicy_Write: type: object properties: runs_per_item: maximum: 100 minimum: 1 type: integer format: int32 pass_threshold: maximum: 100 minimum: 1 type: integer format: int32 CreateDatasetItemsFromSpansRequest: required: - enrichment_options - span_ids type: object properties: span_ids: minItems: 1 uniqueItems: true type: array description: Set of span IDs to add to the dataset items: type: string description: Set of span IDs to add to the dataset format: uuid enrichment_options: $ref: "#/components/schemas/SpanEnrichmentOptions" SpanEnrichmentOptions: type: object properties: includeTags: type: boolean includeFeedbackScores: type: boolean includeComments: type: boolean includeUsage: type: boolean includeMetadata: type: boolean description: Options for enriching span data CreateDatasetItemsFromTracesRequest: required: - enrichment_options - trace_ids type: object properties: trace_ids: minItems: 1 uniqueItems: true type: array description: Set of trace IDs to add to the dataset items: type: string description: Set of trace IDs to add to the dataset format: uuid enrichment_options: $ref: "#/components/schemas/TraceEnrichmentOptions" TraceEnrichmentOptions: type: object properties: includeSpans: type: boolean includeTags: type: boolean includeFeedbackScores: type: boolean includeComments: type: boolean includeUsage: type: boolean includeMetadata: type: boolean description: Options for enriching trace data DatasetIdentifier: required: - dataset_name type: object properties: dataset_name: minLength: 1 type: string project_name: type: string DatasetItemsDelete: type: object properties: item_ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of dataset item IDs to delete (max 1000). Use this to delete specific items by their IDs. Mutually exclusive with 'dataset_id' and 'filters'. items: type: string description: List of dataset item IDs to delete (max 1000). Use this to delete specific items by their IDs. Mutually exclusive with 'dataset_id' and 'filters'. format: uuid dataset_id: type: string description: Dataset ID to scope the deletion. Required when using 'filters'. Mutually exclusive with 'item_ids'. format: uuid filters: type: array description: Filters to select dataset items to delete within the specified dataset. Must be used with 'dataset_id'. Mutually exclusive with 'item_ids'. Empty array means 'delete all items in the dataset'. items: $ref: "#/components/schemas/DatasetItemFilter" batch_group_id: type: string description: "Optional batch group ID to group multiple delete operations\ \ into a single dataset version. If null, mutates the latest version instead\ \ of creating a new one." format: uuid description: Request to delete multiple dataset items DatasetExpansionResponse: type: object properties: generated_samples: type: array description: List of generated synthetic dataset items items: $ref: "#/components/schemas/DatasetItem" model: type: string description: Model used for generation example: gpt-4 total_generated: type: integer description: Total number of samples generated format: int32 example: 10 generation_time: type: string description: Generation timestamp format: date-time readOnly: true DatasetExpansion: required: - model type: object properties: model: minLength: 1 type: string description: The model to use for synthetic data generation example: gpt-4 sample_count: maximum: 200 minimum: 1 type: integer description: Number of synthetic samples to generate format: int32 example: 10 preserve_fields: type: array description: Fields to preserve patterns from original data example: - input - expected_output items: type: string description: Fields to preserve patterns from original data example: "[\"input\",\"expected_output\"]" variation_instructions: type: string description: Additional instructions for data variation example: Create variations that test edge cases custom_prompt: type: string description: Custom prompt to use for generation instead of auto-generated one DatasetExpansion_Write: required: - model type: object properties: model: minLength: 1 type: string description: The model to use for synthetic data generation example: gpt-4 sample_count: maximum: 200 minimum: 1 type: integer description: Number of synthetic samples to generate format: int32 example: 10 preserve_fields: type: array description: Fields to preserve patterns from original data example: - input - expected_output items: type: string description: Fields to preserve patterns from original data example: "[\"input\",\"expected_output\"]" variation_instructions: type: string description: Additional instructions for data variation example: Create variations that test edge cases custom_prompt: type: string description: Custom prompt to use for generation instead of auto-generated one AssertionResult_Compare: type: object properties: value: type: string passed: type: boolean reason: type: string readOnly: true Column_Compare: type: object properties: name: type: string types: uniqueItems: true type: array items: type: string enum: - string - number - object - boolean - array - "null" filter_field_prefix: type: string filterField: type: string description: The field to use for filtering readOnly: true Comment_Compare: required: - text type: object properties: id: type: string format: uuid readOnly: true text: minLength: 1 type: string created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true readOnly: true DatasetItemPage_Compare: type: object properties: content: type: array items: $ref: "#/components/schemas/DatasetItem_Compare" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 columns: uniqueItems: true type: array items: $ref: "#/components/schemas/Column_Compare" sortableBy: type: array items: type: string DatasetItem_Compare: required: - data - source type: object properties: id: type: string description: | Stable item identifier. On write, used as the upsert key. If omitted, a new ID is generated. Remains the same across dataset versions format: uuid dataset_item_id: type: string description: | Deprecated. Always equals 'id'. Retained for backward compatibility and will be removed in a future version format: uuid readOnly: true trace_id: type: string format: uuid span_id: type: string format: uuid source: type: string enum: - manual - trace - span - sdk data: $ref: "#/components/schemas/JsonNode" description: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string tags: uniqueItems: true type: array items: type: string evaluators: type: array items: $ref: "#/components/schemas/EvaluatorItem_Compare" execution_policy: $ref: "#/components/schemas/ExecutionPolicy_Compare" experiment_items: type: array readOnly: true items: $ref: "#/components/schemas/ExperimentItem_Compare" run_summaries_by_experiment: type: object additionalProperties: $ref: "#/components/schemas/ExperimentRunSummary_Compare" readOnly: true dataset_id: type: string format: uuid readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true EvaluatorItem_Compare: required: - config - name - type type: object properties: name: minLength: 1 type: string type: type: string enum: - llm_judge - code_metric config: $ref: "#/components/schemas/JsonNode_Compare" ExecutionPolicy_Compare: type: object properties: runs_per_item: maximum: 100 minimum: 1 type: integer format: int32 pass_threshold: maximum: 100 minimum: 1 type: integer format: int32 ExperimentItem_Compare: required: - dataset_item_id - experiment_id - trace_id type: object properties: id: type: string format: uuid experiment_id: type: string format: uuid dataset_item_id: type: string format: uuid trace_id: type: string format: uuid project_id: type: string format: uuid readOnly: true input: $ref: "#/components/schemas/JsonListString_Compare" output: $ref: "#/components/schemas/JsonListString_Compare" feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScore_Compare" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment_Compare" total_estimated_cost: type: number readOnly: true duration: type: number format: double readOnly: true usage: type: object additionalProperties: type: integer format: int64 readOnly: true readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true trace_visibility_mode: type: string readOnly: true enum: - default - hidden description: type: string readOnly: true assertion_results: type: array readOnly: true items: $ref: "#/components/schemas/AssertionResult_Compare" status: type: string readOnly: true enum: - passed - failed readOnly: true ExperimentRunSummary_Compare: type: object properties: passed_runs: type: integer format: int32 total_runs: type: integer format: int32 status: type: string enum: - passed - failed readOnly: true FeedbackScore_Compare: required: - name - source - value type: object properties: name: minLength: 1 type: string category_name: type: string value: maximum: 999999999.999999999 exclusiveMaximum: false minimum: -999999999.999999999 exclusiveMinimum: false type: number reason: type: string source: type: string enum: - ui - sdk - online_scoring created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true value_by_author: type: object additionalProperties: $ref: "#/components/schemas/ValueEntry_Compare" readOnly: true readOnly: true JsonListString_Compare: type: object readOnly: true anyOf: - type: object - type: array items: type: object - type: string JsonNode_Compare: type: object ValueEntry_Compare: type: object properties: value: type: number reason: type: string category_name: type: string source: type: string enum: - ui - sdk - online_scoring last_updated_at: type: string format: date-time span_type: type: string span_id: type: string readOnly: true DatasetPage_Public: type: object properties: content: type: array items: $ref: "#/components/schemas/Dataset_Public" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 sortableBy: type: array items: type: string DatasetVersionSummary_Public: type: object properties: id: type: string description: Unique identifier of the version format: uuid version_hash: type: string description: Hash of the version content version_name: type: string description: "Sequential version name formatted as 'v1', 'v2', etc." change_description: type: string description: Description of changes in this version tags: uniqueItems: true type: array description: Tags associated with this version items: type: string description: Tags associated with this version description: Summary of the latest dataset version readOnly: true Dataset_Public: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid type: type: string enum: - dataset - evaluation_suite visibility: type: string enum: - private - public tags: uniqueItems: true type: array items: type: string description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true experiment_count: type: integer format: int64 readOnly: true dataset_items_count: type: integer format: int64 readOnly: true optimization_count: type: integer format: int64 readOnly: true most_recent_experiment_at: type: string format: date-time readOnly: true last_created_experiment_at: type: string format: date-time readOnly: true most_recent_optimization_at: type: string format: date-time readOnly: true last_created_optimization_at: type: string format: date-time readOnly: true status: type: string readOnly: true enum: - unknown - processing - completed - failed latest_version: $ref: "#/components/schemas/DatasetVersionSummary_Public" DatasetIdentifier_Public: required: - dataset_name type: object properties: dataset_name: minLength: 1 type: string project_name: type: string AvgValueStat_Public: type: object allOf: - $ref: "#/components/schemas/ProjectStatItemObject_Public" - type: object properties: value: type: number format: double CountValueStat_Public: type: object allOf: - $ref: "#/components/schemas/ProjectStatItemObject_Public" - type: object properties: value: type: integer format: int64 PercentageValueStat_Public: type: object allOf: - $ref: "#/components/schemas/ProjectStatItemObject_Public" - type: object properties: value: $ref: "#/components/schemas/PercentageValues_Public" PercentageValues_Public: type: object properties: p50: type: number p90: type: number p99: type: number ProjectStatItemObject_Public: type: object properties: name: type: string type: type: string enum: - COUNT - PERCENTAGE - AVG discriminator: propertyName: type mapping: PERCENTAGE: "#/components/schemas/PercentageValueStat_Public" COUNT: "#/components/schemas/CountValueStat_Public" AVG: "#/components/schemas/AvgValueStat_Public" ProjectStats_Public: type: object properties: stats: type: array items: $ref: "#/components/schemas/ProjectStatItemObject_Public" DatasetExportJob_Public: type: object properties: id: type: string format: uuid readOnly: true dataset_id: type: string format: uuid readOnly: true dataset_name: type: string readOnly: true status: type: string readOnly: true enum: - PENDING - PROCESSING - COMPLETED - FAILED file_path: type: string readOnly: true error_message: type: string readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true expires_at: type: string format: date-time readOnly: true viewed_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true DatasetItem_Public: required: - data - source type: object properties: id: type: string description: | Stable item identifier. On write, used as the upsert key. If omitted, a new ID is generated. Remains the same across dataset versions format: uuid dataset_item_id: type: string description: | Deprecated. Always equals 'id'. Retained for backward compatibility and will be removed in a future version format: uuid readOnly: true trace_id: type: string format: uuid span_id: type: string format: uuid source: type: string enum: - manual - trace - span - sdk data: $ref: "#/components/schemas/JsonNode" description: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string tags: uniqueItems: true type: array items: type: string evaluators: type: array items: $ref: "#/components/schemas/EvaluatorItem_Public" execution_policy: $ref: "#/components/schemas/ExecutionPolicy_Public" experiment_items: type: array readOnly: true items: $ref: "#/components/schemas/ExperimentItem_Public" run_summaries_by_experiment: type: object additionalProperties: $ref: "#/components/schemas/ExperimentRunSummary_Public" readOnly: true dataset_id: type: string format: uuid readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true ExperimentItem_Public: required: - dataset_item_id - experiment_id - trace_id type: object properties: id: type: string format: uuid experiment_id: type: string format: uuid dataset_item_id: type: string format: uuid trace_id: type: string format: uuid project_id: type: string format: uuid readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true trace_visibility_mode: type: string readOnly: true enum: - default - hidden ExperimentRunSummary_Public: type: object properties: passed_runs: type: integer format: int32 total_runs: type: integer format: int32 status: type: string enum: - passed - failed readOnly: true Column_Public: type: object properties: name: type: string types: uniqueItems: true type: array items: type: string enum: - string - number - object - boolean - array - "null" filter_field_prefix: type: string filterField: type: string description: The field to use for filtering readOnly: true DatasetItemPage_Public: type: object properties: content: type: array items: $ref: "#/components/schemas/DatasetItem_Public" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 columns: uniqueItems: true type: array items: $ref: "#/components/schemas/Column_Public" sortableBy: type: array items: type: string Column: type: object properties: name: type: string types: uniqueItems: true type: array items: type: string enum: - string - number - object - boolean - array - "null" filter_field_prefix: type: string filterField: type: string description: The field to use for filtering readOnly: true PageColumns: type: object properties: columns: type: array items: $ref: "#/components/schemas/Column" ChunkedOutputJsonNode: type: object properties: type: type: object properties: typeName: type: string closed: type: boolean DatasetItemStreamRequest: required: - dataset_name type: object properties: dataset_name: minLength: 1 type: string last_retrieved_id: type: string format: uuid steam_limit: maximum: 2000 minimum: 1 type: integer format: int32 dataset_version: type: string project_name: type: string filters: type: string DatasetUpdate: required: - name type: object properties: name: minLength: 1 type: string description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string visibility: type: string enum: - private - public tags: uniqueItems: true type: array items: type: string DatasetVersionDiff: type: object properties: from_version: type: string to_version: type: string statistics: $ref: "#/components/schemas/DatasetVersionDiffStats" DatasetVersionDiffStats: type: object properties: itemsAdded: type: integer format: int32 itemsModified: type: integer format: int32 itemsDeleted: type: integer format: int32 itemsUnchanged: type: integer format: int32 DatasetVersionTag: required: - tag type: object properties: tag: maxLength: 100 minLength: 0 type: string DatasetVersionPage_Public: type: object properties: content: type: array items: $ref: "#/components/schemas/DatasetVersion_Public" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 DatasetVersionRestore_Public: required: - version_ref type: object properties: version_ref: minLength: 1 type: string description: Version hash or tag to restore from DatasetVersionRetrieveRequest_Public: required: - version_name type: object properties: version_name: minLength: 1 pattern: ^v\d+$ type: string description: "Version name in format 'vN' (e.g., 'v1', 'v373')" example: v1 DatasetVersionUpdate_Public: type: object properties: change_description: type: string description: Optional description of changes in this version example: Updated baseline version tags_to_add: maxItems: 100 minItems: 0 type: array description: Optional list of tags to add to this version example: - production - reviewed items: maxLength: 100 minLength: 0 type: string description: Optional list of tags to add to this version example: "[\"production\",\"reviewed\"]" ExperimentBatchUpdate: required: - ids - update type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of experiment IDs to update (max 1000) items: type: string description: List of experiment IDs to update (max 1000) format: uuid update: $ref: "#/components/schemas/ExperimentUpdate" merge_tags: type: boolean description: "If true, merge tags with existing tags instead of replacing\ \ them. Default: false" description: Request to batch update multiple experiments ExperimentScore: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number ExperimentUpdate: type: object properties: name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string metadata: $ref: "#/components/schemas/JsonNode" tags: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags items: maxLength: 100 minLength: 0 type: string description: Tags tags_to_add: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to add items: maxLength: 100 minLength: 0 type: string description: Tags to add tags_to_remove: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to remove items: maxLength: 100 minLength: 0 type: string description: Tags to remove type: type: string enum: - regular - trial - mini-batch - mutation status: type: string description: The status of the experiment enum: - running - completed - cancelled experiment_scores: type: array items: $ref: "#/components/schemas/ExperimentScore" AssertionScoreAverage: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number description: Per-assertion average pass rates for evaluation suite experiments. Null for regular experiments. readOnly: true Experiment: required: - dataset_name type: object properties: id: type: string format: uuid dataset_name: minLength: 1 type: string nullable: true dataset_id: type: string format: uuid readOnly: true project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Project name. Creates project if it doesn't exist. Ignored when project_id is provided. name: type: string metadata: $ref: "#/components/schemas/JsonListString" tags: maxItems: 50 minItems: 0 uniqueItems: true type: array items: maxLength: 100 minLength: 0 type: string type: type: string enum: - regular - trial - mini-batch - mutation evaluation_method: type: string enum: - dataset - evaluation_suite optimization_id: type: string format: uuid feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment" trace_count: type: integer format: int64 readOnly: true dataset_item_count: type: integer format: int64 readOnly: true created_at: type: string format: date-time readOnly: true duration: $ref: "#/components/schemas/PercentageValues" total_estimated_cost: type: number readOnly: true total_estimated_cost_avg: type: number readOnly: true usage: type: object additionalProperties: type: number format: double readOnly: true readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true status: type: string enum: - running - completed - cancelled experiment_scores: type: array items: $ref: "#/components/schemas/ExperimentScore" prompt_version: $ref: "#/components/schemas/PromptVersionLink" prompt_versions: type: array items: $ref: "#/components/schemas/PromptVersionLink" dataset_version_id: type: string description: "ID of the dataset version this experiment is linked to. If\ \ not provided at creation, experiment will be automatically linked to\ \ the latest version." format: uuid dataset_version_summary: $ref: "#/components/schemas/DatasetVersionSummary" pass_rate: type: number description: Pass rate for evaluation suite experiments (0.0-1.0). Null for regular experiments. readOnly: true passed_count: type: integer description: Number of items that passed for evaluation suite experiments. Null for regular experiments. format: int64 readOnly: true total_count: type: integer description: Total number of items for evaluation suite experiments. Null for regular experiments. format: int64 readOnly: true assertion_scores: type: array description: Per-assertion average pass rates for evaluation suite experiments. Null for regular experiments. readOnly: true items: $ref: "#/components/schemas/AssertionScoreAverage" PercentageValues: type: object properties: p50: type: number p90: type: number p99: type: number PromptVersionLink: required: - id type: object properties: id: type: string format: uuid commit: type: string readOnly: true prompt_id: type: string format: uuid readOnly: true prompt_name: type: string readOnly: true ExperimentScore_Write: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number Experiment_Write: required: - dataset_name type: object properties: id: type: string format: uuid dataset_name: minLength: 1 type: string nullable: true project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Project name. Creates project if it doesn't exist. Ignored when project_id is provided. name: type: string metadata: $ref: "#/components/schemas/JsonListString_Write" tags: maxItems: 50 minItems: 0 uniqueItems: true type: array items: maxLength: 100 minLength: 0 type: string type: type: string enum: - regular - trial - mini-batch - mutation evaluation_method: type: string enum: - dataset - evaluation_suite optimization_id: type: string format: uuid status: type: string enum: - running - completed - cancelled experiment_scores: type: array items: $ref: "#/components/schemas/ExperimentScore_Write" prompt_version: $ref: "#/components/schemas/PromptVersionLink_Write" prompt_versions: type: array items: $ref: "#/components/schemas/PromptVersionLink_Write" dataset_version_id: type: string description: "ID of the dataset version this experiment is linked to. If\ \ not provided at creation, experiment will be automatically linked to\ \ the latest version." format: uuid JsonListString_Write: type: object anyOf: - type: object - type: array items: type: object - type: string PromptVersionLink_Write: required: - id type: object properties: id: type: string format: uuid ExperimentItemsBatch: required: - experiment_items type: object properties: experiment_items: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: $ref: "#/components/schemas/ExperimentItem" ExperimentItemsDelete: required: - ids type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: type: string format: uuid DeleteIdsHolder: required: - ids type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: type: string format: uuid Check: type: object properties: name: type: string enum: - TOPIC - PII result: type: string enum: - passed - failed ErrorInfo: required: - exception_type - traceback type: object properties: exception_type: minLength: 1 type: string message: type: string traceback: minLength: 1 type: string ExperimentItemBulkRecord: required: - dataset_item_id type: object properties: dataset_item_id: type: string format: uuid evaluate_task_result: $ref: "#/components/schemas/JsonListString" trace: $ref: "#/components/schemas/Trace" spans: maxItems: 100 minItems: 0 type: array items: $ref: "#/components/schemas/Span" feedback_scores: maxItems: 100 minItems: 0 type: array items: $ref: "#/components/schemas/FeedbackScore" ExperimentItemBulkUpload: required: - dataset_name - experiment_name - items type: object properties: experiment_name: minLength: 1 type: string dataset_name: minLength: 1 type: string experiment_id: type: string description: "Optional experiment ID. If provided, items will be added to\ \ the existing experiment and experimentName will be ignored. If not provided\ \ or experiment with that ID doesn't exist, a new experiment will be created\ \ with the given experimentName" format: uuid items: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/ExperimentItemBulkRecord" ExperimentItemReference: required: - dataset_id - dataset_item_id - id - name type: object properties: id: type: string description: Experiment ID format: uuid name: type: string description: Experiment name dataset_id: type: string description: Dataset ID format: uuid dataset_item_id: type: string description: Dataset Item ID format: uuid description: "Experiment reference with ID, name, dataset ID, and dataset item\ \ ID" readOnly: true GuardrailsValidation: type: object properties: span_id: type: string format: uuid checks: type: array items: $ref: "#/components/schemas/Check" readOnly: true Span: required: - start_time type: object properties: id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid readOnly: true trace_id: type: string format: uuid parent_span_id: type: string format: uuid name: type: string type: type: string enum: - general - tool - llm - guardrail start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString" output: $ref: "#/components/schemas/JsonListString" metadata: $ref: "#/components/schemas/JsonListString" model: type: string provider: type: string tags: uniqueItems: true type: array items: type: string usage: type: object additionalProperties: type: integer format: int32 error_info: $ref: "#/components/schemas/ErrorInfo" created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time created_by: type: string readOnly: true last_updated_by: type: string readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScore" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment" total_estimated_cost: minimum: 0.0 exclusiveMinimum: false type: number total_estimated_cost_version: type: string duration: type: number description: Duration in milliseconds as a decimal number to support sub-millisecond precision format: double readOnly: true ttft: type: number description: Time to first token in milliseconds format: double source: type: string enum: - sdk - experiment - playground - optimization Trace: required: - start_time type: object properties: id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid readOnly: true name: type: string start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString" output: $ref: "#/components/schemas/JsonListString" metadata: $ref: "#/components/schemas/JsonListString" tags: uniqueItems: true type: array items: type: string error_info: $ref: "#/components/schemas/ErrorInfo" usage: type: object additionalProperties: type: integer format: int64 readOnly: true readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time created_by: type: string readOnly: true last_updated_by: type: string readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScore" span_feedback_scores: type: array description: "Aggregated feedback scores from all spans in this trace, averaged\ \ by score name" readOnly: true items: $ref: "#/components/schemas/FeedbackScore" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment" guardrails_validations: type: array readOnly: true items: $ref: "#/components/schemas/GuardrailsValidation" total_estimated_cost: type: number readOnly: true span_count: type: integer format: int32 readOnly: true duration: type: number description: Duration in milliseconds as a decimal number to support sub-millisecond precision format: double readOnly: true ttft: type: number description: Time to first token in milliseconds format: double thread_id: type: string visibility_mode: type: string readOnly: true enum: - default - hidden llm_span_count: type: integer format: int32 readOnly: true has_tool_spans: type: boolean readOnly: true providers: type: array description: "List of unique provider names from all spans in this trace,\ \ sorted alphabetically" readOnly: true items: type: string description: "List of unique provider names from all spans in this trace,\ \ sorted alphabetically" readOnly: true experiment: $ref: "#/components/schemas/ExperimentItemReference" source: type: string enum: - sdk - experiment - playground - optimization ErrorInfo_ExperimentItemBulkWriteView: required: - exception_type - traceback type: object properties: exception_type: minLength: 1 type: string message: type: string traceback: minLength: 1 type: string ExperimentItemBulkRecord_ExperimentItemBulkWriteView: required: - dataset_item_id type: object properties: dataset_item_id: type: string format: uuid evaluate_task_result: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" trace: $ref: "#/components/schemas/Trace_ExperimentItemBulkWriteView" spans: maxItems: 100 minItems: 0 type: array items: $ref: "#/components/schemas/Span_ExperimentItemBulkWriteView" feedback_scores: maxItems: 100 minItems: 0 type: array items: $ref: "#/components/schemas/FeedbackScore_ExperimentItemBulkWriteView" ExperimentItemBulkUpload_ExperimentItemBulkWriteView: required: - dataset_name - experiment_name - items type: object properties: experiment_name: minLength: 1 type: string dataset_name: minLength: 1 type: string experiment_id: type: string description: "Optional experiment ID. If provided, items will be added to\ \ the existing experiment and experimentName will be ignored. If not provided\ \ or experiment with that ID doesn't exist, a new experiment will be created\ \ with the given experimentName" format: uuid items: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/ExperimentItemBulkRecord_ExperimentItemBulkWriteView" FeedbackScore_ExperimentItemBulkWriteView: required: - name - source - value type: object properties: name: minLength: 1 type: string category_name: type: string value: maximum: 999999999.999999999 exclusiveMaximum: false minimum: -999999999.999999999 exclusiveMinimum: false type: number reason: type: string source: type: string enum: - ui - sdk - online_scoring created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true value_by_author: type: object additionalProperties: $ref: "#/components/schemas/ValueEntry_ExperimentItemBulkWriteView" readOnly: true JsonListString_ExperimentItemBulkWriteView: type: object anyOf: - type: object - type: array items: type: object - type: string Span_ExperimentItemBulkWriteView: required: - start_time type: object properties: id: type: string format: uuid parent_span_id: type: string format: uuid name: type: string type: type: string enum: - general - tool - llm - guardrail start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" output: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" metadata: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" model: type: string provider: type: string tags: uniqueItems: true type: array items: type: string usage: type: object additionalProperties: type: integer format: int32 error_info: $ref: "#/components/schemas/ErrorInfo_ExperimentItemBulkWriteView" last_updated_at: type: string format: date-time total_estimated_cost: minimum: 0.0 exclusiveMinimum: false type: number total_estimated_cost_version: type: string ttft: type: number description: Time to first token in milliseconds format: double source: type: string enum: - sdk - experiment - playground - optimization Trace_ExperimentItemBulkWriteView: required: - start_time type: object properties: id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" name: type: string start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" output: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" metadata: $ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView" tags: uniqueItems: true type: array items: type: string error_info: $ref: "#/components/schemas/ErrorInfo_ExperimentItemBulkWriteView" last_updated_at: type: string format: date-time ttft: type: number description: Time to first token in milliseconds format: double thread_id: type: string source: type: string enum: - sdk - experiment - playground - optimization description: "Please provide either none, only one of evaluate_task_result or\ \ trace, but never both" ValueEntry_ExperimentItemBulkWriteView: type: object properties: value: type: number reason: type: string category_name: type: string source: type: string enum: - ui - sdk - online_scoring last_updated_at: type: string format: date-time span_type: type: string span_id: type: string readOnly: true AssertionScoreAverage_Public: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number description: Per-assertion average pass rates for evaluation suite experiments. Null for regular experiments. readOnly: true Comment_Public: required: - text type: object properties: id: type: string format: uuid readOnly: true text: minLength: 1 type: string created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true readOnly: true ExperimentPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Experiment_Public" sortableBy: type: array items: type: string ExperimentScore_Public: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number Experiment_Public: required: - dataset_name type: object properties: id: type: string format: uuid dataset_name: minLength: 1 type: string nullable: true dataset_id: type: string format: uuid readOnly: true project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Project name. Creates project if it doesn't exist. Ignored when project_id is provided. name: type: string metadata: $ref: "#/components/schemas/JsonListString_Public" tags: maxItems: 50 minItems: 0 uniqueItems: true type: array items: maxLength: 100 minLength: 0 type: string type: type: string enum: - regular - trial - mini-batch - mutation evaluation_method: type: string enum: - dataset - evaluation_suite optimization_id: type: string format: uuid feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage_Public" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment_Public" trace_count: type: integer format: int64 readOnly: true dataset_item_count: type: integer format: int64 readOnly: true created_at: type: string format: date-time readOnly: true duration: $ref: "#/components/schemas/PercentageValues_Public" total_estimated_cost: type: number readOnly: true total_estimated_cost_avg: type: number readOnly: true usage: type: object additionalProperties: type: number format: double readOnly: true readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true status: type: string enum: - running - completed - cancelled experiment_scores: type: array items: $ref: "#/components/schemas/ExperimentScore_Public" prompt_version: $ref: "#/components/schemas/PromptVersionLink_Public" prompt_versions: type: array items: $ref: "#/components/schemas/PromptVersionLink_Public" dataset_version_id: type: string description: "ID of the dataset version this experiment is linked to. If\ \ not provided at creation, experiment will be automatically linked to\ \ the latest version." format: uuid dataset_version_summary: $ref: "#/components/schemas/DatasetVersionSummary_Public" pass_rate: type: number description: Pass rate for evaluation suite experiments (0.0-1.0). Null for regular experiments. readOnly: true passed_count: type: integer description: Number of items that passed for evaluation suite experiments. Null for regular experiments. format: int64 readOnly: true total_count: type: integer description: Total number of items for evaluation suite experiments. Null for regular experiments. format: int64 readOnly: true assertion_scores: type: array description: Per-assertion average pass rates for evaluation suite experiments. Null for regular experiments. readOnly: true items: $ref: "#/components/schemas/AssertionScoreAverage_Public" JsonListString_Public: type: object anyOf: - type: object - type: array items: type: object - type: string PromptVersionLink_Public: type: object properties: prompt_version_id: type: string format: uuid commit: type: string prompt_id: type: string format: uuid prompt_name: type: string FeedbackScoreNames_Public: type: object properties: scores: type: array items: $ref: "#/components/schemas/ScoreName_Public" ScoreName_Public: type: object properties: name: type: string type: type: string ExperimentGroupResponse: type: object properties: content: type: object additionalProperties: $ref: "#/components/schemas/GroupContent" details: $ref: "#/components/schemas/GroupDetails" GroupContent: type: object properties: label: type: string GroupDetail: type: object properties: group_sorting: type: array items: type: string GroupDetails: type: object properties: groups_details: type: array items: $ref: "#/components/schemas/GroupDetail" AggregationData: type: object properties: experiment_count: type: integer format: int64 trace_count: type: integer format: int64 total_estimated_cost: type: number total_estimated_cost_avg: type: number duration: $ref: "#/components/schemas/PercentageValues" feedback_scores: type: array items: $ref: "#/components/schemas/FeedbackScoreAverage" experiment_scores: type: array items: $ref: "#/components/schemas/FeedbackScoreAverage" pass_rate_avg: type: number passed_count_sum: type: integer format: int64 total_count_sum: type: integer format: int64 ExperimentGroupAggregationsResponse: type: object properties: content: type: object additionalProperties: $ref: "#/components/schemas/GroupContentWithAggregations" GroupContentWithAggregations: type: object properties: label: type: string aggregations: $ref: "#/components/schemas/AggregationData" IdsHolder: required: - ids type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: type: string format: uuid ExperimentItemStreamRequest: required: - experiment_name type: object properties: experiment_name: minLength: 1 type: string limit: maximum: 2000 minimum: 1 type: integer format: int32 last_retrieved_id: type: string format: uuid truncate: type: boolean description: "Truncate image included in either input, output or metadata" default: true project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string ChunkedOutputJsonNode_Public: type: object properties: type: type: object properties: typeName: type: string closed: type: boolean ExperimentStreamRequest_Public: required: - name type: object properties: name: minLength: 1 type: string limit: maximum: 2000 minimum: 1 type: integer format: int32 last_retrieved_id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string BooleanFeedbackDefinition: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback" - type: object properties: details: $ref: "#/components/schemas/BooleanFeedbackDetail" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true BooleanFeedbackDetail: required: - falseLabel - trueLabel type: object properties: trueLabel: minLength: 1 type: string description: Label for true/1 value example: Pass falseLabel: minLength: 1 type: string description: Label for false/0 value example: Fail CategoricalFeedbackDefinition: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback" - type: object properties: details: $ref: "#/components/schemas/CategoricalFeedbackDetail" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true CategoricalFeedbackDetail: required: - categories type: object properties: categories: type: object additionalProperties: type: number format: double Feedback: required: - name - type type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string description: maxLength: 255 minLength: 0 type: string description: Optional description for the feedback definition example: This feedback definition is used to rate response quality createdAt: type: string format: date-time readOnly: true createdBy: type: string readOnly: true lastUpdatedAt: type: string format: date-time readOnly: true lastUpdatedBy: type: string readOnly: true type: type: string enum: - numerical - categorical - boolean discriminator: propertyName: type mapping: numerical: "#/components/schemas/NumericalFeedbackDefinition" categorical: "#/components/schemas/CategoricalFeedbackDefinition" boolean: "#/components/schemas/BooleanFeedbackDefinition" NumericalFeedbackDefinition: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback" - type: object properties: details: $ref: "#/components/schemas/NumericalFeedbackDetail" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true NumericalFeedbackDetail: required: - max - min type: object properties: max: type: number min: type: number BooleanFeedbackDefinition_Create: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Create" - type: object properties: details: $ref: "#/components/schemas/BooleanFeedbackDetail_Create" BooleanFeedbackDetail_Create: required: - falseLabel - trueLabel type: object properties: trueLabel: minLength: 1 type: string description: Label for true/1 value example: Pass falseLabel: minLength: 1 type: string description: Label for false/0 value example: Fail CategoricalFeedbackDefinition_Create: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Create" - type: object properties: details: $ref: "#/components/schemas/CategoricalFeedbackDetail_Create" CategoricalFeedbackDetail_Create: required: - categories type: object properties: categories: type: object additionalProperties: type: number format: double Feedback_Create: required: - name - type type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string description: maxLength: 255 minLength: 0 type: string description: Optional description for the feedback definition example: This feedback definition is used to rate response quality type: type: string enum: - numerical - categorical - boolean discriminator: propertyName: type mapping: numerical: "#/components/schemas/NumericalFeedbackDefinition_Create" categorical: "#/components/schemas/CategoricalFeedbackDefinition_Create" boolean: "#/components/schemas/BooleanFeedbackDefinition_Create" NumericalFeedbackDefinition_Create: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Create" - type: object properties: details: $ref: "#/components/schemas/NumericalFeedbackDetail_Create" NumericalFeedbackDetail_Create: required: - max - min type: object properties: max: type: number min: type: number BooleanFeedbackDefinition_Public: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Public" - type: object properties: details: $ref: "#/components/schemas/BooleanFeedbackDetail_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true BooleanFeedbackDetail_Public: required: - falseLabel - trueLabel type: object properties: trueLabel: minLength: 1 type: string description: Label for true/1 value example: Pass falseLabel: minLength: 1 type: string description: Label for false/0 value example: Fail CategoricalFeedbackDefinition_Public: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Public" - type: object properties: details: $ref: "#/components/schemas/CategoricalFeedbackDetail_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true CategoricalFeedbackDetail_Public: required: - categories type: object properties: categories: type: object additionalProperties: type: number format: double FeedbackDefinitionPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/FeedbackObject_Public" FeedbackObject_Public: required: - name - type type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string description: maxLength: 255 minLength: 0 type: string description: Optional description for the feedback definition example: This feedback definition is used to rate response quality createdAt: type: string format: date-time readOnly: true createdBy: type: string readOnly: true lastUpdatedAt: type: string format: date-time readOnly: true lastUpdatedBy: type: string readOnly: true type: type: string enum: - numerical - categorical - boolean discriminator: propertyName: type mapping: numerical: "#/components/schemas/NumericalFeedbackDefinition_Public" categorical: "#/components/schemas/CategoricalFeedbackDefinition_Public" boolean: "#/components/schemas/BooleanFeedbackDefinition_Public" NumericalFeedbackDefinition_Public: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Public" - type: object properties: details: $ref: "#/components/schemas/NumericalFeedbackDetail_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true NumericalFeedbackDetail_Public: required: - max - min type: object properties: max: type: number min: type: number Feedback_Public: required: - name - type type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string description: maxLength: 255 minLength: 0 type: string description: Optional description for the feedback definition example: This feedback definition is used to rate response quality createdAt: type: string format: date-time readOnly: true createdBy: type: string readOnly: true lastUpdatedAt: type: string format: date-time readOnly: true lastUpdatedBy: type: string readOnly: true type: type: string enum: - numerical - categorical - boolean discriminator: propertyName: type mapping: numerical: "#/components/schemas/NumericalFeedbackDefinition_Public" categorical: "#/components/schemas/CategoricalFeedbackDefinition_Public" boolean: "#/components/schemas/BooleanFeedbackDefinition_Public" BooleanFeedbackDefinition_Update: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Update" - type: object properties: details: $ref: "#/components/schemas/BooleanFeedbackDetail_Update" BooleanFeedbackDetail_Update: required: - falseLabel - trueLabel type: object properties: trueLabel: minLength: 1 type: string description: Label for true/1 value example: Pass falseLabel: minLength: 1 type: string description: Label for false/0 value example: Fail CategoricalFeedbackDefinition_Update: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Update" - type: object properties: details: $ref: "#/components/schemas/CategoricalFeedbackDetail_Update" CategoricalFeedbackDetail_Update: required: - categories type: object properties: categories: type: object additionalProperties: type: number format: double Feedback_Update: required: - name - type type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string description: maxLength: 255 minLength: 0 type: string description: Optional description for the feedback definition example: This feedback definition is used to rate response quality type: type: string enum: - numerical - categorical - boolean discriminator: propertyName: type mapping: numerical: "#/components/schemas/NumericalFeedbackDefinition_Update" categorical: "#/components/schemas/CategoricalFeedbackDefinition_Update" boolean: "#/components/schemas/BooleanFeedbackDefinition_Update" NumericalFeedbackDefinition_Update: required: - details - name - type type: object allOf: - $ref: "#/components/schemas/Feedback_Update" - type: object properties: details: $ref: "#/components/schemas/NumericalFeedbackDetail_Update" NumericalFeedbackDetail_Update: required: - max - min type: object properties: max: type: number min: type: number Guardrail: required: - config - details - entity_id - name - result - secondary_id type: object properties: id: type: string format: uuid readOnly: true entity_id: type: string format: uuid secondary_id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid name: type: string enum: - TOPIC - PII result: type: string enum: - passed - failed config: $ref: "#/components/schemas/JsonNode" details: $ref: "#/components/schemas/JsonNode" GuardrailBatch: required: - guardrails type: object properties: guardrails: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/Guardrail" GuardrailBatch_Write: required: - guardrails type: object properties: guardrails: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/Guardrail_Write" Guardrail_Write: required: - config - details - entity_id - name - result - secondary_id type: object properties: entity_id: type: string format: uuid secondary_id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid name: type: string enum: - TOPIC - PII result: type: string enum: - passed - failed config: $ref: "#/components/schemas/JsonNode" details: $ref: "#/components/schemas/JsonNode" ProviderApiKeyPage_Public: type: object properties: size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/ProviderApiKey_Public" sortableBy: type: array items: type: string ProviderApiKey_Public: required: - provider type: object properties: id: type: string format: uuid readOnly: true provider: type: string enum: - openai - anthropic - gemini - openrouter - vertex-ai - bedrock - ollama - custom-llm - opik-free api_key: type: string name: maxLength: 150 minLength: 0 type: string provider_name: maxLength: 150 minLength: 0 type: string description: "Provider name - required for custom LLM and Bedrock providers\ \ to uniquely identify them (e.g., 'ollama', 'vllm', 'Bedrock us-east-1').\ \ Must not be blank for custom and Bedrock providers. Should not be set\ \ for standard providers (OpenAI, Anthropic, etc.). This requirement is\ \ conditional and validation is enforced programmatically." example: ollama headers: type: object additionalProperties: type: string configuration: type: object additionalProperties: type: string base_url: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true read_only: type: boolean description: "If true, this provider is system-managed and cannot be edited\ \ or deleted" readOnly: true ProviderApiKey: required: - provider type: object properties: id: type: string format: uuid readOnly: true provider: type: string enum: - openai - anthropic - gemini - openrouter - vertex-ai - bedrock - ollama - custom-llm - opik-free api_key: type: string name: maxLength: 150 minLength: 0 type: string provider_name: maxLength: 150 minLength: 0 type: string description: "Provider name - required for custom LLM and Bedrock providers\ \ to uniquely identify them (e.g., 'ollama', 'vllm', 'Bedrock us-east-1').\ \ Must not be blank for custom and Bedrock providers. Should not be set\ \ for standard providers (OpenAI, Anthropic, etc.). This requirement is\ \ conditional and validation is enforced programmatically." example: ollama headers: type: object additionalProperties: type: string configuration: type: object additionalProperties: type: string base_url: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true read_only: type: boolean description: "If true, this provider is system-managed and cannot be edited\ \ or deleted" readOnly: true ProviderApiKey_Write: required: - provider type: object properties: provider: type: string enum: - openai - anthropic - gemini - openrouter - vertex-ai - bedrock - ollama - custom-llm - opik-free api_key: type: string name: maxLength: 150 minLength: 0 type: string provider_name: maxLength: 150 minLength: 0 type: string description: "Provider name - required for custom LLM and Bedrock providers\ \ to uniquely identify them (e.g., 'ollama', 'vllm', 'Bedrock us-east-1').\ \ Must not be blank for custom and Bedrock providers. Should not be set\ \ for standard providers (OpenAI, Anthropic, etc.). This requirement is\ \ conditional and validation is enforced programmatically." example: ollama headers: type: object additionalProperties: type: string configuration: type: object additionalProperties: type: string base_url: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string ProviderApiKeyUpdate: type: object properties: api_key: type: string name: maxLength: 150 minLength: 0 type: string provider_name: maxLength: 150 minLength: 0 type: string description: "Provider name - can be set to migrate legacy custom LLM or\ \ Bedrock providers to the new multi-provider format. Once set, it cannot\ \ be changed. Should only be set for custom LLM and Bedrock providers." example: ollama headers: type: object additionalProperties: type: string configuration: type: object additionalProperties: type: string base_url: type: string LocalRunnerLogEntry: required: - stream - text type: object properties: stream: minLength: 1 type: string text: minLength: 1 type: string LocalRunnerConnectResponse: type: object properties: runner_id: type: string format: uuid workspace_id: type: string project_id: type: string format: uuid project_name: type: string LocalRunnerConnectRequest: required: - pairing_code - runner_name type: object properties: pairing_code: minLength: 1 type: string runner_name: minLength: 1 type: string CreateLocalRunnerJobRequest: required: - agent_name - project_id type: object properties: agent_name: minLength: 1 type: string inputs: $ref: "#/components/schemas/JsonNode" project_id: type: string format: uuid mask_id: type: string format: uuid metadata: $ref: "#/components/schemas/LocalRunnerJobMetadata" LocalRunnerJobMetadata: type: object properties: dataset_id: type: string format: uuid dataset_version_id: type: string format: uuid dataset_item_version_id: type: string format: uuid dataset_item_id: type: string format: uuid LocalRunnerPairResponse: type: object properties: pairing_code: type: string runner_id: type: string format: uuid expires_in_seconds: type: integer format: int32 LocalRunnerPairRequest: required: - project_id type: object properties: project_id: type: string format: uuid LocalRunnerJob: type: object properties: id: type: string format: uuid runner_id: type: string format: uuid agent_name: type: string status: type: string enum: - pending - running - completed - failed - cancelled inputs: $ref: "#/components/schemas/JsonNode" result: $ref: "#/components/schemas/JsonNode" error: type: string project_id: type: string format: uuid trace_id: type: string format: uuid mask_id: type: string format: uuid metadata: $ref: "#/components/schemas/LocalRunnerJobMetadata" timeout: type: integer format: int32 created_at: type: string format: date-time started_at: type: string format: date-time completed_at: type: string format: date-time Agent: type: object properties: name: type: string description: type: string language: type: string executable: type: string source_file: type: string params: type: array items: $ref: "#/components/schemas/Param" timeout: type: integer format: int32 LocalRunner: type: object properties: id: type: string format: uuid name: type: string project_id: type: string format: uuid status: type: string enum: - pairing - connected - disconnected connected_at: type: string format: date-time agents: type: array items: $ref: "#/components/schemas/Agent" Param: required: - name - type type: object properties: name: minLength: 1 type: string type: minLength: 1 type: string LocalRunnerHeartbeatResponse: type: object properties: cancelled_job_ids: type: array items: type: string format: uuid LocalRunnerJobPage: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/LocalRunnerJob" LocalRunnerPage: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/LocalRunner" LocalRunnerJobResultRequest: required: - status type: object properties: status: type: string enum: - pending - running - completed - failed - cancelled result: $ref: "#/components/schemas/JsonNode" error: type: string trace_id: type: string format: uuid ManualEvaluationResponse: type: object properties: entities_queued: type: integer description: Number of entities queued for evaluation format: int32 example: 5 rules_applied: type: integer description: Number of rules that will be applied format: int32 example: 2 ManualEvaluationRequest: required: - entity_ids - entity_type - project_id - rule_ids type: object properties: project_id: type: string description: Project ID format: uuid example: 550e8400-e29b-41d4-a716-446655440000 entity_ids: minItems: 1 type: array description: List of entity IDs (trace IDs or thread IDs) to evaluate example: - 550e8400-e29b-41d4-a716-446655440000 - 550e8400-e29b-41d4-a716-446655440001 items: type: string description: List of entity IDs (trace IDs or thread IDs) to evaluate format: uuid rule_ids: minItems: 1 type: array description: List of automation rule IDs to apply example: - 660e8400-e29b-41d4-a716-446655440000 items: type: string description: List of automation rule IDs to apply format: uuid entity_type: type: string description: Type of entity to evaluate (trace or thread) example: trace enum: - trace - thread - span OllamaModel: required: - name type: object properties: name: minLength: 1 type: string description: Model name example: llama2 size: type: integer description: Model size in bytes format: int64 digest: type: string description: Model digest/hash modified_at: type: string description: Model modification date format: date-time description: Ollama model information OllamaInstanceBaseUrlRequest: required: - base_url type: object properties: base_url: minLength: 1 type: string description: "Base URL of the Ollama instance. May include /v1 suffix which\ \ will be automatically removed for connection testing. For inference,\ \ use the URL with /v1 suffix for OpenAI-compatible endpoints." example: http://localhost:11434/v1 api_key: type: string description: "Optional API key for authenticated Ollama instances. If provided,\ \ will be sent as Bearer token in Authorization header." description: Request with Ollama instance base URL for connection testing or model discovery. OllamaConnectionTestResponse: type: object properties: connected: type: boolean description: Whether the connection was successful version: type: string description: Server version (returned even if connection failed or version is incompatible) error_message: type: string description: Error message if connection failed description: Response from Ollama connection test. ExportTraceServiceRequest: $ref: "#/components/schemas/JsonNode" Optimization: required: - dataset_name - objective_name - status type: object properties: id: type: string format: uuid name: type: string dataset_name: minLength: 1 type: string project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Project name. Creates project if it doesn't exist. Ignored when project_id is provided. project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid objective_name: minLength: 1 type: string status: type: string enum: - running - completed - cancelled - initialized - error metadata: $ref: "#/components/schemas/JsonListString" studio_config: $ref: "#/components/schemas/OptimizationStudioConfig" dataset_id: type: string format: uuid readOnly: true num_trials: type: integer format: int64 readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage" experiment_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time last_updated_by: type: string readOnly: true baseline_objective_score: type: number readOnly: true best_objective_score: type: number readOnly: true baseline_duration: type: number readOnly: true best_duration: type: number readOnly: true baseline_cost: type: number readOnly: true best_cost: type: number readOnly: true total_optimization_cost: type: number readOnly: true OptimizationStudioConfig: required: - dataset_name - evaluation - llm_model - optimizer - prompt type: object properties: dataset_name: minLength: 1 type: string prompt: $ref: "#/components/schemas/StudioPrompt" llm_model: $ref: "#/components/schemas/StudioLlmModel" evaluation: $ref: "#/components/schemas/StudioEvaluation" optimizer: $ref: "#/components/schemas/StudioOptimizer" StudioEvaluation: required: - metrics type: object properties: metrics: minItems: 1 type: array items: $ref: "#/components/schemas/StudioMetric" StudioLlmModel: required: - model type: object properties: model: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode" StudioMessage: required: - content - role type: object properties: role: minLength: 1 type: string content: minLength: 1 type: string StudioMetric: required: - type type: object properties: type: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode" StudioOptimizer: required: - type type: object properties: type: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode" StudioPrompt: required: - messages type: object properties: messages: minItems: 1 type: array items: $ref: "#/components/schemas/StudioMessage" OptimizationStudioConfig_Write: required: - dataset_name - evaluation - llm_model - optimizer - prompt type: object properties: dataset_name: minLength: 1 type: string prompt: $ref: "#/components/schemas/StudioPrompt_Write" llm_model: $ref: "#/components/schemas/StudioLlmModel_Write" evaluation: $ref: "#/components/schemas/StudioEvaluation_Write" optimizer: $ref: "#/components/schemas/StudioOptimizer_Write" Optimization_Write: required: - dataset_name - objective_name - status type: object properties: id: type: string format: uuid name: type: string dataset_name: minLength: 1 type: string project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: Project name. Creates project if it doesn't exist. Ignored when project_id is provided. project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid objective_name: minLength: 1 type: string status: type: string enum: - running - completed - cancelled - initialized - error metadata: $ref: "#/components/schemas/JsonListString_Write" studio_config: $ref: "#/components/schemas/OptimizationStudioConfig_Write" last_updated_at: type: string format: date-time StudioEvaluation_Write: required: - metrics type: object properties: metrics: minItems: 1 type: array items: $ref: "#/components/schemas/StudioMetric_Write" StudioLlmModel_Write: required: - model type: object properties: model: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode_Write" StudioMessage_Write: required: - content - role type: object properties: role: minLength: 1 type: string content: minLength: 1 type: string StudioMetric_Write: required: - type type: object properties: type: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode_Write" StudioOptimizer_Write: required: - type type: object properties: type: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode_Write" StudioPrompt_Write: required: - messages type: object properties: messages: minItems: 1 type: array items: $ref: "#/components/schemas/StudioMessage_Write" OptimizationPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Optimization_Public" sortableBy: type: array items: type: string OptimizationStudioConfig_Public: required: - dataset_name - evaluation - llm_model - optimizer - prompt type: object properties: dataset_name: minLength: 1 type: string prompt: $ref: "#/components/schemas/StudioPrompt_Public" llm_model: $ref: "#/components/schemas/StudioLlmModel_Public" evaluation: $ref: "#/components/schemas/StudioEvaluation_Public" optimizer: $ref: "#/components/schemas/StudioOptimizer_Public" Optimization_Public: required: - dataset_name - objective_name - status type: object properties: id: type: string format: uuid name: type: string dataset_name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid objective_name: minLength: 1 type: string status: type: string enum: - running - completed - cancelled - initialized - error metadata: $ref: "#/components/schemas/JsonListString_Public" studio_config: $ref: "#/components/schemas/OptimizationStudioConfig_Public" dataset_id: type: string format: uuid readOnly: true num_trials: type: integer format: int64 readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage_Public" experiment_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage_Public" created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time last_updated_by: type: string readOnly: true baseline_objective_score: type: number readOnly: true best_objective_score: type: number readOnly: true baseline_duration: type: number readOnly: true best_duration: type: number readOnly: true baseline_cost: type: number readOnly: true best_cost: type: number readOnly: true total_optimization_cost: type: number readOnly: true StudioEvaluation_Public: required: - metrics type: object properties: metrics: minItems: 1 type: array items: $ref: "#/components/schemas/StudioMetric_Public" StudioLlmModel_Public: required: - model type: object properties: model: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode_Public" StudioMessage_Public: required: - content - role type: object properties: role: minLength: 1 type: string content: minLength: 1 type: string StudioMetric_Public: required: - type type: object properties: type: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode_Public" StudioOptimizer_Public: required: - type type: object properties: type: minLength: 1 type: string parameters: $ref: "#/components/schemas/JsonNode_Public" StudioPrompt_Public: required: - messages type: object properties: messages: minItems: 1 type: array items: $ref: "#/components/schemas/StudioMessage_Public" OptimizationStudioLog: type: object properties: url: type: string last_modified: type: string format: date-time expires_at: type: string format: date-time OptimizationUpdate: type: object properties: name: type: string status: type: string enum: - running - completed - cancelled - initialized - error PromptPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Prompt_Public" sortableBy: type: array items: type: string Prompt_Public: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string template_structure: type: string description: "Template structure type: 'text' or 'chat'. Immutable after\ \ creation." default: text enum: - text - chat tags: uniqueItems: true type: array items: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true version_count: type: integer format: int64 readOnly: true ErrorCountWithDeviation: type: object properties: count: type: integer format: int64 deviation: type: integer format: int64 deviation_percentage: type: integer format: int64 Project: required: - name type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string visibility: type: string enum: - private - public description: maxLength: 255 minLength: 0 type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true last_updated_trace_at: type: string format: date-time readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage" duration: $ref: "#/components/schemas/PercentageValues" total_estimated_cost: type: number format: double readOnly: true total_estimated_cost_sum: type: number format: double readOnly: true usage: type: object additionalProperties: type: number format: double readOnly: true readOnly: true trace_count: type: integer format: int64 readOnly: true thread_count: type: integer format: int64 readOnly: true guardrails_failed_count: type: integer format: int64 readOnly: true error_count: $ref: "#/components/schemas/ErrorCountWithDeviation" Project_Write: required: - name type: object properties: name: minLength: 1 type: string visibility: type: string enum: - private - public description: maxLength: 255 minLength: 0 type: string ProjectPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Project_Public" sortableBy: type: array items: type: string Project_Public: required: - name type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string visibility: type: string enum: - private - public description: maxLength: 255 minLength: 0 type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true last_updated_trace_at: type: string format: date-time readOnly: true FeedbackScoreNames: type: object properties: scores: type: array items: $ref: "#/components/schemas/ScoreName" ScoreName: type: object properties: name: type: string type: type: string TokenUsageNames: type: object properties: names: type: array items: type: string KpiCardResponse: type: object properties: stats: type: array items: $ref: "#/components/schemas/KpiMetric" KpiMetric: type: object properties: type: type: string enum: - count - errors - avg_duration - avg_cost current_value: type: number format: double previous_value: type: number format: double KpiCardRequest: required: - entity_type - interval_end - interval_start type: object properties: entity_type: type: string enum: - traces - spans - threads filters: type: string interval_start: type: string format: date-time interval_end: type: string format: date-time DataPointNumber_Public: required: - time type: object properties: time: type: string format: date-time value: type: number ProjectMetricResponse_Public: type: object properties: project_id: type: string format: uuid metric_type: type: string enum: - FEEDBACK_SCORES - TRACE_COUNT - TOKEN_USAGE - DURATION - COST - GUARDRAILS_FAILED_COUNT - THREAD_COUNT - THREAD_DURATION - THREAD_FEEDBACK_SCORES - SPAN_FEEDBACK_SCORES - SPAN_COUNT - SPAN_DURATION - SPAN_TOKEN_USAGE interval: type: string enum: - HOURLY - DAILY - WEEKLY - TOTAL results: type: array items: $ref: "#/components/schemas/ResultsNumber_Public" ResultsNumber_Public: type: object properties: name: type: string data: type: array items: $ref: "#/components/schemas/DataPointNumber_Public" BreakdownConfig_Public: type: object properties: field: type: string enum: - none - tags - metadata - name - error_info - error_type - model - provider - type metadata_key: type: string sub_metric: type: string ProjectMetricRequest_Public: type: object properties: metric_type: type: string enum: - FEEDBACK_SCORES - TRACE_COUNT - TOKEN_USAGE - DURATION - COST - GUARDRAILS_FAILED_COUNT - THREAD_COUNT - THREAD_DURATION - THREAD_FEEDBACK_SCORES - SPAN_FEEDBACK_SCORES - SPAN_COUNT - SPAN_DURATION - SPAN_TOKEN_USAGE interval: type: string enum: - HOURLY - DAILY - WEEKLY - TOTAL interval_start: type: string format: date-time interval_end: type: string format: date-time span_filters: type: array items: $ref: "#/components/schemas/SpanFilter_Public" trace_filters: type: array items: $ref: "#/components/schemas/TraceFilter_Public" thread_filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter_Public" breakdown: $ref: "#/components/schemas/BreakdownConfig_Public" ProjectStatsSummary: type: object properties: content: type: array items: $ref: "#/components/schemas/ProjectStatsSummaryItem" ProjectStatsSummaryItem: type: object properties: project_id: type: string format: uuid feedback_scores: type: array items: $ref: "#/components/schemas/FeedbackScoreAverage" duration: $ref: "#/components/schemas/PercentageValues" total_estimated_cost: type: number format: double total_estimated_cost_sum: type: number format: double usage: type: object additionalProperties: type: number format: double trace_count: type: integer format: int64 thread_count: type: integer format: int64 guardrails_failed_count: type: integer format: int64 error_count: $ref: "#/components/schemas/ErrorCountWithDeviation" ErrorCountWithDeviation_Detailed: type: object properties: count: type: integer format: int64 deviation: type: integer format: int64 deviation_percentage: type: integer format: int64 readOnly: true FeedbackScoreAverage_Detailed: required: - name - value type: object properties: name: minLength: 1 type: string value: type: number readOnly: true PercentageValues_Detailed: type: object properties: p50: type: number p90: type: number p99: type: number readOnly: true Project_Detailed: required: - name type: object properties: id: type: string format: uuid readOnly: true name: minLength: 1 type: string visibility: type: string enum: - private - public description: maxLength: 255 minLength: 0 type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true last_updated_trace_at: type: string format: date-time readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScoreAverage_Detailed" duration: $ref: "#/components/schemas/PercentageValues_Detailed" total_estimated_cost: type: number format: double readOnly: true total_estimated_cost_sum: type: number format: double readOnly: true usage: type: object additionalProperties: type: number format: double readOnly: true readOnly: true trace_count: type: integer format: int64 readOnly: true thread_count: type: integer format: int64 readOnly: true guardrails_failed_count: type: integer format: int64 readOnly: true error_count: $ref: "#/components/schemas/ErrorCountWithDeviation_Detailed" ErrorMessage_Detailed: type: object properties: errors: type: array items: type: string ProjectRetrieve_Detailed: required: - name type: object properties: name: minLength: 1 type: string ProjectUpdate: type: object properties: name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: maxLength: 255 minLength: 0 type: string visibility: type: string enum: - private - public Prompt: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "For project scope, specify either project_id or project_name.\ \ If project_name is provided and the project does not exist, it will\ \ be created. Ignored when project_id is provided. If neither is provided,\ \ the prompt is created at workspace level." description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string template: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string metadata: $ref: "#/components/schemas/JsonNode" change_description: type: string type: type: string enum: - mustache - jinja2 template_structure: type: string description: "Template structure type: 'text' or 'chat'. Immutable after\ \ creation." default: text enum: - text - chat tags: uniqueItems: true type: array items: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true version_count: type: integer format: int64 readOnly: true latest_version: $ref: "#/components/schemas/PromptVersion" requested_version: $ref: "#/components/schemas/PromptVersion" PromptVersion: required: - template type: object properties: id: type: string description: "version unique identifier, generated if absent" format: uuid prompt_id: type: string format: uuid readOnly: true commit: pattern: "^[a-zA-Z0-9]{8}$" type: string description: "version short unique identifier, generated if absent. it must\ \ be 8 characters long" template: minLength: 1 type: string metadata: $ref: "#/components/schemas/JsonNode" type: type: string enum: - mustache - jinja2 change_description: type: string tags: uniqueItems: true type: array items: minLength: 1 type: string variables: uniqueItems: true type: array readOnly: true items: type: string readOnly: true template_structure: type: string readOnly: true enum: - text - chat created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true readOnly: true Prompt_Write: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "For project scope, specify either project_id or project_name.\ \ If project_name is provided and the project does not exist, it will\ \ be created. Ignored when project_id is provided. If neither is provided,\ \ the prompt is created at workspace level." description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string template: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string metadata: $ref: "#/components/schemas/JsonNode_Write" change_description: type: string type: type: string enum: - mustache - jinja2 template_structure: type: string description: "Template structure type: 'text' or 'chat'. Immutable after\ \ creation." default: text enum: - text - chat tags: uniqueItems: true type: array items: type: string JsonNode_Detail: type: object PromptVersion_Detail: required: - template type: object properties: id: type: string description: "version unique identifier, generated if absent" format: uuid prompt_id: type: string format: uuid readOnly: true commit: pattern: "^[a-zA-Z0-9]{8}$" type: string description: "version short unique identifier, generated if absent. it must\ \ be 8 characters long" template: minLength: 1 type: string metadata: $ref: "#/components/schemas/JsonNode_Detail" type: type: string enum: - mustache - jinja2 change_description: type: string tags: uniqueItems: true type: array items: minLength: 1 type: string variables: uniqueItems: true type: array readOnly: true items: type: string readOnly: true template_structure: type: string readOnly: true enum: - text - chat created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true ErrorMessage_Detail: type: object properties: code: type: integer format: int32 message: type: string details: type: string CreatePromptVersion_Detail: required: - name - version type: object properties: name: minLength: 1 type: string version: $ref: "#/components/schemas/PromptVersion_Detail" template_structure: type: string description: "Template structure for the prompt: 'text' or 'chat'. Note:\ \ This field is only used when creating a new prompt. If a prompt with\ \ the given name already exists, this field is ignored and the existing\ \ prompt's template structure is used. Template structure is immutable\ \ after prompt creation." default: text enum: - text - chat exclude_blueprint_update_for_projects: uniqueItems: true type: array description: Optional set of project IDs to exclude from automatic blueprint creation when this prompt version is committed. items: type: string description: Optional set of project IDs to exclude from automatic blueprint creation when this prompt version is committed. format: uuid project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If provided, scopes the prompt to the specified project. Ignored\ \ when project_id is provided." Prompt_Detail: required: - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string project_id: type: string description: Project ID. Takes precedence over project_name when both are provided. format: uuid description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string template_structure: type: string description: "Template structure type: 'text' or 'chat'. Immutable after\ \ creation." default: text enum: - text - chat tags: uniqueItems: true type: array items: type: string created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true version_count: type: integer format: int64 readOnly: true latest_version: $ref: "#/components/schemas/PromptVersion_Detail" requested_version: $ref: "#/components/schemas/PromptVersion_Detail" PromptVersionPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/PromptVersion_Public" sortableBy: type: array items: type: string PromptVersion_Public: required: - template type: object properties: id: type: string description: "version unique identifier, generated if absent" format: uuid prompt_id: type: string format: uuid readOnly: true commit: pattern: "^[a-zA-Z0-9]{8}$" type: string description: "version short unique identifier, generated if absent. it must\ \ be 8 characters long" template: minLength: 1 type: string metadata: $ref: "#/components/schemas/JsonNode_Public" type: type: string enum: - mustache - jinja2 change_description: type: string tags: uniqueItems: true type: array items: minLength: 1 type: string template_structure: type: string readOnly: true enum: - text - chat created_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true PromptVersionCommitsRequest_Public: required: - commits type: object properties: commits: maxItems: 1000 minItems: 1 type: array items: minLength: 1 type: string PromptVersionRetrieve_Detail: required: - name type: object properties: name: minLength: 1 type: string commit: type: string project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If provided, scopes the search to the specified project" Prompt_Updatable: required: - name type: object properties: name: minLength: 1 type: string description: maxLength: 255 minLength: 0 pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string tags: uniqueItems: true type: array items: type: string PromptVersionBatchUpdate: required: - ids - update type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: IDs of prompt versions to update items: type: string description: IDs of prompt versions to update format: uuid update: $ref: "#/components/schemas/PromptVersionUpdate" merge_tags: type: boolean description: | Tag merge behavior: - true: Add new tags to existing tags (union) - false: Replace all existing tags with new tags (default behaviour if not provided) default: false description: | Request to update one or more prompt versions. Note: Prompt versions are immutable by design - only organizational properties (such as tags etc.) can be updated. PromptVersionUpdate: type: object properties: tags: maxItems: 50 minItems: 0 uniqueItems: true type: array description: | Tags to set or merge with existing tags. Follows PATCH semantics: - If merge_tags is true, these tags will be added to existing tags. - If merge_tags is false, these tags will replace all existing tags. - null: preserve existing tags (no change). - empty set: clear all tags when merge_tags is false. items: maxLength: 100 minLength: 0 type: string description: | Tags to set or merge with existing tags. Follows PATCH semantics: - If merge_tags is true, these tags will be added to existing tags. - If merge_tags is false, these tags will replace all existing tags. - null: preserve existing tags (no change). - empty set: clear all tags when merge_tags is false. description: | Update to apply to prompt versions. Note: Prompt versions are immutable by design. Only organizational properties (such as tags etc.) can be updated. Core properties like template, metadata etc. cannot be modified after creation. RetentionRule_Public: required: - retention type: object properties: id: type: string format: uuid readOnly: true workspace_id: type: string readOnly: true project_id: type: string format: uuid level: type: string description: Computed from projectId and organizationLevel readOnly: true enum: - organization - workspace - project retention: type: string enum: - short_14d - base_60d - extended_400d - unlimited apply_to_past: type: boolean enabled: type: boolean readOnly: true created_by: type: string readOnly: true created_at: type: string format: date-time readOnly: true last_updated_by: type: string readOnly: true last_updated_at: type: string format: date-time readOnly: true catch_up_cursor: type: string description: Current position of historical data cleanup format: uuid readOnly: true catch_up_done: type: boolean description: Whether historical catch-up is complete readOnly: true RetentionRule_Write: required: - retention type: object properties: project_id: type: string format: uuid organization_level: type: boolean description: Set to true to create an organization-level rule writeOnly: true retention: type: string enum: - short_14d - base_60d - extended_400d - unlimited apply_to_past: type: boolean RetentionRulePage_Public: type: object properties: content: type: array items: $ref: "#/components/schemas/RetentionRule_Public" page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 ServiceTogglesConfig: required: - alertsEnabled - anthropicProviderEnabled - assistantSidebarEnabled - bedrockProviderEnabled - collaboratorsTabEnabled - csvUploadEnabled - customllmProviderEnabled - datasetExportEnabled - datasetVersioningEnabled - exportEnabled - forceWorkspaceVersion - geminiProviderEnabled - guardrailsEnabled - ollamaProviderEnabled - openaiProviderEnabled - openrouterProviderEnabled - opikAIEnabled - optimizationStudioEnabled - pythonEvaluatorEnabled - spanLlmAsJudgeEnabled - spanUserDefinedMetricPythonEnabled - traceThreadPythonEvaluatorEnabled - vertexaiProviderEnabled - welcomeWizardEnabled type: object properties: pythonEvaluatorEnabled: type: boolean traceThreadPythonEvaluatorEnabled: type: boolean spanLlmAsJudgeEnabled: type: boolean spanUserDefinedMetricPythonEnabled: type: boolean guardrailsEnabled: type: boolean opikAIEnabled: type: boolean alertsEnabled: type: boolean welcomeWizardEnabled: type: boolean csvUploadEnabled: type: boolean exportEnabled: type: boolean optimizationStudioEnabled: type: boolean datasetVersioningEnabled: type: boolean datasetExportEnabled: type: boolean openaiProviderEnabled: type: boolean anthropicProviderEnabled: type: boolean geminiProviderEnabled: type: boolean openrouterProviderEnabled: type: boolean vertexaiProviderEnabled: type: boolean bedrockProviderEnabled: type: boolean customllmProviderEnabled: type: boolean ollamaProviderEnabled: type: boolean collaboratorsTabEnabled: type: boolean assistantSidebarEnabled: type: boolean forceWorkspaceVersion: minLength: 1 type: string SpanBatchUpdate: required: - ids - update type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of span IDs to update (max 1000) items: type: string description: List of span IDs to update (max 1000) format: uuid update: $ref: "#/components/schemas/SpanUpdate" merge_tags: type: boolean description: "If true, merge tags with existing tags instead of replacing\ \ them. Default: false" description: Request to batch update multiple spans SpanUpdate: required: - trace_id type: object properties: project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null and project_id not specified, Default Project is assumed" project_id: type: string description: "If null and project_name not specified, Default Project is\ \ assumed" format: uuid trace_id: type: string format: uuid parent_span_id: type: string format: uuid name: type: string type: type: string enum: - general - tool - llm - guardrail end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString" output: $ref: "#/components/schemas/JsonListString" metadata: $ref: "#/components/schemas/JsonListString" model: type: string provider: type: string tags: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags items: maxLength: 100 minLength: 0 type: string description: Tags tags_to_add: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to add items: maxLength: 100 minLength: 0 type: string description: Tags to add tags_to_remove: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to remove items: maxLength: 100 minLength: 0 type: string description: Tags to remove usage: type: object additionalProperties: type: integer format: int32 total_estimated_cost: minimum: 0.0 exclusiveMinimum: false type: number error_info: $ref: "#/components/schemas/ErrorInfo" ttft: type: number format: double source: type: string enum: - sdk - experiment - playground - optimization ErrorInfo_Write: required: - exception_type - traceback type: object properties: exception_type: minLength: 1 type: string message: type: string traceback: minLength: 1 type: string Span_Write: required: - start_time type: object properties: id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" trace_id: type: string format: uuid parent_span_id: type: string format: uuid name: type: string type: type: string enum: - general - tool - llm - guardrail start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString_Write" output: $ref: "#/components/schemas/JsonListString_Write" metadata: $ref: "#/components/schemas/JsonListString_Write" model: type: string provider: type: string tags: uniqueItems: true type: array items: type: string usage: type: object additionalProperties: type: integer format: int32 error_info: $ref: "#/components/schemas/ErrorInfo_Write" last_updated_at: type: string format: date-time total_estimated_cost: minimum: 0.0 exclusiveMinimum: false type: number total_estimated_cost_version: type: string ttft: type: number description: Time to first token in milliseconds format: double source: type: string enum: - sdk - experiment - playground - optimization SpanBatch: required: - spans type: object properties: spans: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/Span" SpanBatch_Write: required: - spans type: object properties: spans: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/Span_Write" DeleteFeedbackScore: required: - name type: object properties: name: minLength: 1 type: string author: type: string ErrorInfo_Public: required: - exception_type - traceback type: object properties: exception_type: minLength: 1 type: string message: type: string traceback: minLength: 1 type: string FeedbackScore_Public: required: - name - source - value type: object properties: name: minLength: 1 type: string category_name: type: string value: maximum: 999999999.999999999 exclusiveMaximum: false minimum: -999999999.999999999 exclusiveMinimum: false type: number reason: type: string source: type: string enum: - ui - sdk - online_scoring created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time readOnly: true created_by: type: string readOnly: true last_updated_by: type: string readOnly: true value_by_author: type: object additionalProperties: $ref: "#/components/schemas/ValueEntry_Public" readOnly: true description: "Aggregated feedback scores from all spans in this trace, averaged\ \ by score name" readOnly: true Span_Public: required: - start_time type: object properties: id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid readOnly: true trace_id: type: string format: uuid parent_span_id: type: string format: uuid name: type: string type: type: string enum: - general - tool - llm - guardrail start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString_Public" output: $ref: "#/components/schemas/JsonListString_Public" metadata: $ref: "#/components/schemas/JsonListString_Public" model: type: string provider: type: string tags: uniqueItems: true type: array items: type: string usage: type: object additionalProperties: type: integer format: int32 error_info: $ref: "#/components/schemas/ErrorInfo_Public" created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time created_by: type: string readOnly: true last_updated_by: type: string readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScore_Public" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment_Public" total_estimated_cost: minimum: 0.0 exclusiveMinimum: false type: number total_estimated_cost_version: type: string duration: type: number description: Duration in milliseconds as a decimal number to support sub-millisecond precision format: double readOnly: true ttft: type: number description: Time to first token in milliseconds format: double source: type: string enum: - sdk - experiment - playground - optimization ValueEntry_Public: type: object properties: value: type: number reason: type: string category_name: type: string source: type: string enum: - ui - sdk - online_scoring last_updated_at: type: string format: date-time span_type: type: string span_id: type: string readOnly: true SpanPage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Span_Public" sortableBy: type: array items: type: string FeedbackScoreBatch: required: - scores type: object properties: scores: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/FeedbackScoreBatchItem" FeedbackScoreBatchItem: required: - id - name - source - value type: object properties: project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid name: minLength: 1 type: string category_name: type: string value: maximum: 999999999.999999999 exclusiveMaximum: false minimum: -999999999.999999999 exclusiveMinimum: false type: number reason: type: string source: type: string enum: - ui - sdk - online_scoring author: type: string id: type: string format: uuid SpanSearchStreamRequest_Public: type: object properties: trace_id: type: string format: uuid project_name: type: string project_id: type: string format: uuid type: type: string enum: - general - tool - llm - guardrail filters: type: array items: $ref: "#/components/schemas/SpanFilter_Public" limit: maximum: 2000 minimum: 1 type: integer description: Max number of spans to be streamed format: int32 default: 500 last_retrieved_id: type: string format: uuid truncate: type: boolean description: "Truncate image included in either input, output or metadata" default: true from_time: type: string description: Filter spans created from this time (ISO-8601 format). format: date-time to_time: type: string description: "Filter spans created up to this time (ISO-8601 format). If\ \ not provided, defaults to current time. Must be after 'from_time'." format: date-time TraceBatchUpdate: required: - ids - update type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of trace IDs to update (max 1000) items: type: string description: List of trace IDs to update (max 1000) format: uuid update: $ref: "#/components/schemas/TraceUpdate" merge_tags: type: boolean description: "If true, merge tags with existing tags instead of replacing\ \ them. Default: false" description: Request to batch update multiple traces TraceUpdate: type: object properties: project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null and project_id not specified, Default Project is assumed" project_id: type: string description: "If null and project_name not specified, Default Project is\ \ assumed" format: uuid name: type: string end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString" output: $ref: "#/components/schemas/JsonListString" metadata: $ref: "#/components/schemas/JsonListString" tags: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags items: maxLength: 100 minLength: 0 type: string description: Tags tags_to_add: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to add items: maxLength: 100 minLength: 0 type: string description: Tags to add tags_to_remove: maxItems: 50 minItems: 0 uniqueItems: true type: array description: Tags to remove items: maxLength: 100 minLength: 0 type: string description: Tags to remove error_info: $ref: "#/components/schemas/ErrorInfo" thread_id: type: string ttft: type: number format: double source: type: string enum: - sdk - experiment - playground - optimization TraceThreadBatchUpdate: required: - ids - update type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array description: List of thread model IDs to update (max 1000) items: type: string description: List of thread model IDs to update (max 1000) format: uuid update: $ref: "#/components/schemas/TraceThreadUpdate" merge_tags: type: boolean description: "If true, merge tags with existing tags instead of replacing\ \ them. Default: false" description: Request to batch update multiple trace threads TraceThreadUpdate: type: object properties: tags: maxItems: 50 minItems: 0 uniqueItems: true type: array items: maxLength: 100 minLength: 0 type: string tags_to_add: maxItems: 50 minItems: 0 uniqueItems: true type: array items: maxLength: 100 minLength: 0 type: string tags_to_remove: maxItems: 50 minItems: 0 uniqueItems: true type: array items: maxLength: 100 minLength: 0 type: string TraceThreadBatchIdentifier: type: object properties: project_name: type: string project_id: type: string format: uuid thread_id: type: string thread_ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: minLength: 1 type: string Trace_Write: required: - start_time type: object properties: id: type: string format: uuid project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" name: type: string start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString_Write" output: $ref: "#/components/schemas/JsonListString_Write" metadata: $ref: "#/components/schemas/JsonListString_Write" tags: uniqueItems: true type: array items: type: string error_info: $ref: "#/components/schemas/ErrorInfo_Write" last_updated_at: type: string format: date-time ttft: type: number description: Time to first token in milliseconds format: double thread_id: type: string source: type: string enum: - sdk - experiment - playground - optimization TraceBatch: required: - traces type: object properties: traces: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/Trace" TraceBatch_Write: required: - traces type: object properties: traces: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/Trace_Write" DeleteThreadFeedbackScores: required: - names - project_name - thread_id type: object properties: project_name: minLength: 1 type: string thread_id: minLength: 1 type: string names: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: minLength: 1 type: string author: type: string DeleteTraceThreads: required: - thread_ids type: object properties: project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, project_id must be provided" project_id: type: string description: "If null, project_name must be provided" format: uuid thread_ids: maxItems: 1000 minItems: 1 type: array items: minLength: 1 type: string BatchDeleteByProject: required: - ids type: object properties: ids: maxItems: 1000 minItems: 1 uniqueItems: true type: array items: type: string format: uuid project_id: type: string format: uuid Check_Public: type: object properties: name: type: string enum: - TOPIC - PII result: type: string enum: - passed - failed ExperimentItemReference_Public: required: - dataset_id - dataset_item_id - id - name type: object properties: id: type: string description: Experiment ID format: uuid name: type: string description: Experiment name dataset_id: type: string description: Dataset ID format: uuid dataset_item_id: type: string description: Dataset Item ID format: uuid description: "Experiment reference with ID, name, dataset ID, and dataset item\ \ ID" readOnly: true GuardrailsValidation_Public: type: object properties: span_id: type: string format: uuid checks: type: array items: $ref: "#/components/schemas/Check_Public" readOnly: true Trace_Public: required: - start_time type: object properties: id: type: string format: uuid project_id: type: string format: uuid readOnly: true name: type: string start_time: type: string format: date-time end_time: type: string format: date-time input: $ref: "#/components/schemas/JsonListString_Public" output: $ref: "#/components/schemas/JsonListString_Public" metadata: $ref: "#/components/schemas/JsonListString_Public" tags: uniqueItems: true type: array items: type: string error_info: $ref: "#/components/schemas/ErrorInfo_Public" usage: type: object additionalProperties: type: integer format: int64 readOnly: true readOnly: true created_at: type: string format: date-time readOnly: true last_updated_at: type: string format: date-time created_by: type: string readOnly: true last_updated_by: type: string readOnly: true feedback_scores: type: array readOnly: true items: $ref: "#/components/schemas/FeedbackScore_Public" span_feedback_scores: type: array description: "Aggregated feedback scores from all spans in this trace, averaged\ \ by score name" readOnly: true items: $ref: "#/components/schemas/FeedbackScore_Public" comments: type: array readOnly: true items: $ref: "#/components/schemas/Comment_Public" guardrails_validations: type: array readOnly: true items: $ref: "#/components/schemas/GuardrailsValidation_Public" total_estimated_cost: type: number readOnly: true span_count: type: integer format: int32 readOnly: true duration: type: number description: Duration in milliseconds as a decimal number to support sub-millisecond precision format: double readOnly: true ttft: type: number description: Time to first token in milliseconds format: double thread_id: type: string visibility_mode: type: string readOnly: true enum: - default - hidden llm_span_count: type: integer format: int32 readOnly: true has_tool_spans: type: boolean readOnly: true providers: type: array description: "List of unique provider names from all spans in this trace,\ \ sorted alphabetically" readOnly: true items: type: string description: "List of unique provider names from all spans in this trace,\ \ sorted alphabetically" readOnly: true experiment: $ref: "#/components/schemas/ExperimentItemReference_Public" source: type: string enum: - sdk - experiment - playground - optimization TraceThread: type: object properties: id: type: string project_id: type: string format: uuid thread_model_id: type: string format: uuid start_time: type: string format: date-time end_time: type: string format: date-time duration: type: number format: double first_message: $ref: "#/components/schemas/JsonListString" last_message: $ref: "#/components/schemas/JsonListString" feedback_scores: type: array items: $ref: "#/components/schemas/FeedbackScore" status: type: string enum: - active - inactive number_of_messages: type: integer format: int64 total_estimated_cost: type: number usage: type: object additionalProperties: type: integer format: int64 comments: type: array items: $ref: "#/components/schemas/Comment" tags: uniqueItems: true type: array items: type: string last_updated_at: type: string format: date-time last_updated_by: type: string created_by: type: string created_at: type: string format: date-time TraceThreadIdentifier: required: - thread_id type: object properties: project_name: type: string project_id: type: string format: uuid thread_id: minLength: 1 type: string truncate: type: boolean TraceThreadPage: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/TraceThread" sortableBy: type: array items: type: string TracePage_Public: type: object properties: page: type: integer format: int32 size: type: integer format: int32 total: type: integer format: int64 content: type: array items: $ref: "#/components/schemas/Trace_Public" sortableBy: type: array items: type: string FeedbackScoreBatchItemThread: required: - name - source - thread_id - value type: object properties: project_name: pattern: (?s)^\s*(\S.*\S|\S)\s*$ type: string description: "If null, the default project is used" project_id: type: string format: uuid name: minLength: 1 type: string category_name: type: string value: maximum: 999999999.999999999 exclusiveMaximum: false minimum: -999999999.999999999 exclusiveMinimum: false type: number reason: type: string source: type: string enum: - ui - sdk - online_scoring author: type: string thread_id: minLength: 1 type: string FeedbackScoreBatchThread: required: - scores type: object properties: scores: maxItems: 1000 minItems: 1 type: array items: $ref: "#/components/schemas/FeedbackScoreBatchItemThread" TraceThreadSearchStreamRequest: type: object properties: project_name: type: string project_id: type: string format: uuid filters: type: array items: $ref: "#/components/schemas/TraceThreadFilter" last_retrieved_thread_model_id: type: string format: uuid limit: maximum: 2000 minimum: 1 type: integer description: Max number of trace thread to be streamed format: int32 default: 500 truncate: type: boolean description: "Truncate input, output and metadata to slim payloads" default: true strip_attachments: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects stripped attachments" default: false from_time: type: string description: Filter trace threads created from this time (ISO-8601 format). format: date-time to_time: type: string description: "Filter trace threads created up to this time (ISO-8601 format).\ \ If not provided, defaults to current time. Must be after 'from_time'." format: date-time TraceSearchStreamRequest_Public: type: object properties: project_name: type: string project_id: type: string format: uuid filters: type: array items: $ref: "#/components/schemas/TraceFilter_Public" last_retrieved_id: type: string format: uuid limit: maximum: 2000 minimum: 1 type: integer description: Max number of traces to be streamed format: int32 default: 500 truncate: type: boolean description: "Truncate input, output and metadata to slim payloads" default: true strip_attachments: type: boolean description: "If true, returns attachment references like [file.png]; if\ \ false, downloads and reinjects stripped attachments" default: false from_time: type: string description: Filter traces created from this time (ISO-8601 format). format: date-time to_time: type: string description: "Filter traces created up to this time (ISO-8601 format). If\ \ not provided, defaults to current time. Must be after 'from_time'." format: date-time WelcomeWizardTracking: type: object properties: completed: type: boolean description: Whether the welcome wizard has been completed WelcomeWizardSubmission: type: object properties: role: maxLength: 100 minLength: 0 type: string description: Optional user role integrations: type: array description: List of integrations the user selected items: type: string description: List of integrations the user selected email: maxLength: 255 minLength: 0 type: string description: Optional user email format: email join_beta_program: type: boolean description: Whether user wants to join beta programs Permission: type: object properties: permissionName: type: string permissionValue: type: string WorkspaceUserPermissions: type: object properties: userName: type: string workspaceName: type: string permissions: type: array items: $ref: "#/components/schemas/Permission" Result: type: object properties: name: type: string current: type: number format: double previous: type: number format: double WorkspaceMetricsSummaryRequest: required: - interval_end - interval_start type: object properties: project_ids: uniqueItems: true type: array items: type: string format: uuid interval_start: type: string format: date-time interval_end: type: string format: date-time start_before_end: type: boolean DataPointDouble: required: - time type: object properties: time: type: string format: date-time value: type: number format: double WorkspaceMetricResponse: type: object properties: results: type: array items: $ref: "#/components/schemas/Result" WorkspaceMetricRequest: required: - interval_end - interval_start type: object properties: project_ids: uniqueItems: true type: array items: type: string format: uuid name: type: string interval_start: type: string format: date-time interval_end: type: string format: date-time start_before_end: type: boolean WorkspaceConfiguration: type: object properties: timeout_to_mark_thread_as_inactive: type: string description: "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." truncation_on_tables: type: boolean description: "Enable or disable data truncation in table views. When disabled,\ \ the frontend will limit pagination to prevent performance issues. Default:\ \ true (truncation enabled)." example: true color_map: type: object additionalProperties: type: string description: "Workspace-level color map. Maps label names to hex color\ \ values (e.g. #FF0000). Max 10000 entries." description: "Workspace-level color map. Maps label names to hex color values\ \ (e.g. #FF0000). Max 10000 entries." WorkspaceVersion: type: object properties: opik_version: type: string description: |- The determined Opik navigation version for this workspace. 'version_1' = legacy workspace-scoped navigation, 'version_2' = new project-first navigation. enum: - version_1 - version_2 description: |- Workspace version response. The opik_version field indicates which navigation mode the frontend should render: 'version_1' (legacy workspace-scoped) or 'version_2' (project-first). WorkspaceMetricsSummaryResponse: type: object properties: results: type: array items: $ref: "#/components/schemas/Result"