---
title: "Clickhouse Eval Results Update 2"
method: PUT
path: "/clickhouse/eval-results/{id}/"
tags: ["evaluations"]
---

# Clickhouse Eval Results Update 2

`PUT /clickhouse/eval-results/{id}/`

PUT handler with superadmin lock and field protection.

Same as patch() - checks lock and field protection before delegating.

## Path parameters

- `id` string, required

## Headers

- `Authorization` string, required

## Request body

- PublicEvalResultDetailRequest — Mixin to handle underscore-prefixed field mapping in serializers. This is used when Django annotations require underscore prefixes to avoid name conflicts with original column names, but we want to expose the clean field names in the API response. Usage: 1. Annotate queryset with underscore prefixes: _field_name 2. This mixin automatically maps _field_name -> field_name in to_internal_value 3. The serializer can then use the clean field names normally
  - `organization` integer, required
  - `unique_organization_id` string
  - `type` 'llm' | 'code' | 'human' | 'function' | 'human_numerical' | 'human_categorical' | 'human_boolean' | 'human_text' | 'custom' — * `llm` - Llm * `code` - Code * `human` - Human * `function` - Function * `human_numerical` - Human Numerical * `human_categorical` - Human Categorical * `human_boolean` - Human Boolean * `human_text` - Human Text * `custom` - Custom
  - `environment` string
  - `numerical_value` number, double
  - `string_value` string
  - `boolean_value` boolean, nullable
  - `categorical_value` string[]
  - `json_value` string
  - `is_passed` boolean
  - `cost` number, double
  - `evaluator_id` string
  - `evaluator_slug` string
  - `scorer` string
  - `log_id` string
  - `prompt_id` string
  - `prompt_version_number` integer
  - `dataset_id` string
  - `status` 'pending' | 'completed' | 'failed' — * `pending` - Pending * `completed` - Completed * `failed` - Failed
  - `error_message` string, nullable

## Response `200`

- PublicEvalResultDetail — Mixin to handle underscore-prefixed field mapping in serializers. This is used when Django annotations require underscore prefixes to avoid name conflicts with original column names, but we want to expose the clean field names in the API response. Usage: 1. Annotate queryset with underscore prefixes: _field_name 2. This mixin automatically maps _field_name -> field_name in to_internal_value 3. The serializer can then use the clean field names normally
  - `id` string, required
  - `created_at` string, date-time, required
  - `updated_by` integer, nullable, required
  - `type` 'llm' | 'code' | 'human' | 'function' | 'human_numerical' | 'human_categorical' | 'human_boolean' | 'human_text' | 'custom' — * `llm` - Llm * `code` - Code * `human` - Human * `function` - Function * `human_numerical` - Human Numerical * `human_categorical` - Human Categorical * `human_boolean` - Human Boolean * `human_text` - Human Text * `custom` - Custom
  - `environment` string
  - `numerical_value` number, double
  - `string_value` string
  - `boolean_value` boolean, nullable
  - `categorical_value` string[]
  - `json_value` string
  - `is_passed` boolean
  - `cost` number, double
  - `evaluator_id` string
  - `evaluator_slug` string
  - `scorer` string
  - `log_id` string
  - `prompt_id` string
  - `prompt_version_number` integer
  - `dataset_id` string
  - `status` 'pending' | 'completed' | 'failed' — * `pending` - Pending * `completed` - Completed * `failed` - Failed
  - `error_message` string, nullable
  - `evaluator` PublicEvaluatorDetail, required — User-friendly serializer for evaluator detail view via API.
    - `version_id` string
    - `configurations` object
    - `categorical_choices` object[]
    - `score_config` object
    - `passing_conditions` object, nullable
    - `llm_config` object, nullable
    - `code_config` object, nullable
    - `project` string, nullable
    - `is_public` boolean, required
    - `eval_class` string
    - `created_by` Editor, required
      - `id` integer, required
      - `email` string, required
      - `name` string, required
      - `username` string
      - `first_name` string
      - `last_name` string
    - `updated_by` Editor, required
      - `id` integer, required
      - `email` string, required
      - `name` string, required
      - `username` string
      - `first_name` string
      - `last_name` string
    - `editor` Editor, required
      - `id` integer, required
      - `email` string, required
      - `name` string, required
      - `username` string
      - `first_name` string
      - `last_name` string
    - `id` string
    - `version` integer
    - `is_read_only` boolean
    - `version_description` string
    - `evaluator_slug` string
    - `name` string, required
    - `description` string
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `type` 'llm' | 'code' | 'human' | 'function' | 'human_numerical' | 'human_categorical' | 'human_boolean' | 'human_text' | 'custom' — * `llm` - Llm * `code` - Code * `human` - Human * `function` - Function * `human_numerical` - Human Numerical * `human_categorical` - Human Categorical * `human_boolean` - Human Boolean * `human_text` - Human Text * `custom` - Custom
    - `score_value_type` 'numerical' | 'boolean' | 'percentage' | 'single_select' | 'multi_select' | 'text' | 'json' | 'comment' | 'categorical' — * `numerical` - Numerical * `boolean` - Boolean * `percentage` - Percentage * `single_select` - Single Select * `multi_select` - Multi Select * `text` - Text * `json` - Json * `comment` - Comment * `categorical` - Categorical
    - `custom_required_fields` string[]
    - `starred` boolean
  - `inputs` string, required

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
