---
title: "Update an evaluator"
method: PATCH
path: "/api/evaluators/{evaluator_id}/"
tags: ["evaluators"]
---

# Update an evaluator

`PATCH /api/evaluators/{evaluator_id}/`

Partially update the current draft/latest evaluator configuration. Committed read-only versions cannot be edited.

## Path parameters

- `evaluator_id` string, required

## Headers

- `Authorization` string, required

## Request body

- object
  - `name` string
  - `evaluator_slug` string — Organization-scoped evaluator slug.
  - `type` 'llm' | 'human' | 'code'
  - `score_value_type` 'numerical' | 'boolean' | 'percentage' | 'single_select' | 'multi_select' | 'text' | 'json' | 'comment' | 'categorical'
  - `eval_class` 'keywordsai_custom_llm' | 'custom_code' — Optional pre-built evaluator template.
  - `description` string, nullable
  - `score_config` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaScoreConfig — Score configuration. For numerical/percentage scores, use `min_score` and `max_score`. For select scores, use `choices`.
    - `min_score` number, double
    - `max_score` number, double
    - `choices` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaScoreConfigChoicesItems[]
      - `name` string, required
      - `value` union, required
        - string
        - number, double
        - boolean
  - `passing_conditions` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaPassingConditions — Passing conditions in the standard Respan filter format.
  - `llm_config` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaLlmConfig — LLM grader configuration. The backend validates this against the selected evaluator form.
    - `model` string
    - `evaluator_definition` string — Prompt/template used by the LLM grader.
    - `scoring_rubric` string
    - `temperature` number, double
    - `max_tokens` integer
    - `top_p` number, double
    - `frequency_penalty` number, double
    - `presence_penalty` number, double
    - `stop` string[]
    - `response_format` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaLlmConfigResponseFormat
    - `tools` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaLlmConfigToolsItems[]
    - `tool_choice` unknown
    - `verbosity` string
  - `code_config` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaCodeConfig — Code grader configuration.
    - `eval_code_snippet` string — Python code defining `main(eval_inputs)`.
  - `configurations` object — Legacy user-facing configuration object. New clients should prefer `llm_config`, `code_config`, `score_config`, and `passing_conditions`.
  - `categorical_choices` ApiEvaluatorsEvaluatorIdPatchRequestBodyContentApplicationJsonSchemaCategoricalChoicesItems[]
    - `name` string, required
    - `value` union, required
      - string
      - number, double
      - boolean
  - `starred` boolean

## Response `200`

Updated evaluator.

- EvaluatorsUpdateEvaluatorResponse200
  - `id` string, required — Stable evaluator ID shared by all versions.
  - `version_id` string — Unique ID for this evaluator version.
  - `version` integer — Version number. The first draft is version 0.
  - `is_read_only` boolean — Whether this version is committed and immutable.
  - `version_description` string — Commit message for this version.
  - `name` string, required
  - `evaluator_slug` string — Organization-scoped evaluator slug.
  - `type` 'llm' | 'human' | 'code', required
  - `score_value_type` 'numerical' | 'boolean' | 'percentage' | 'single_select' | 'multi_select' | 'text' | 'json' | 'comment' | 'categorical', required
  - `eval_class` 'keywordsai_custom_llm' | 'custom_code' — Optional pre-built evaluator template.
  - `description` string, nullable
  - `score_config` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaScoreConfig — Score configuration. For numerical/percentage scores, use `min_score` and `max_score`. For select scores, use `choices`.
    - `min_score` number, double
    - `max_score` number, double
    - `choices` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaScoreConfigChoicesItems[]
      - `name` string, required
      - `value` union, required
        - string
        - number, double
        - boolean
  - `passing_conditions` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaPassingConditions — Passing conditions in the standard Respan filter format.
  - `llm_config` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaLlmConfig — LLM grader configuration. The backend validates this against the selected evaluator form.
    - `model` string
    - `evaluator_definition` string — Prompt/template used by the LLM grader.
    - `scoring_rubric` string
    - `temperature` number, double
    - `max_tokens` integer
    - `top_p` number, double
    - `frequency_penalty` number, double
    - `presence_penalty` number, double
    - `stop` string[]
    - `response_format` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaLlmConfigResponseFormat
    - `tools` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaLlmConfigToolsItems[]
    - `tool_choice` unknown
    - `verbosity` string
  - `code_config` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaCodeConfig — Code grader configuration.
    - `eval_code_snippet` string — Python code defining `main(eval_inputs)`.
  - `configurations` object — Legacy user-facing configuration object. New clients should prefer `llm_config`, `code_config`, `score_config`, and `passing_conditions`.
  - `categorical_choices` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaCategoricalChoicesItems[], nullable
    - `name` string, required
    - `value` union, required
      - string
      - number, double
      - boolean
  - `starred` boolean
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `created_by` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaCreatedBy
    - `id` integer
    - `first_name` string
    - `last_name` string
    - `email` string, email
  - `updated_by` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaUpdatedBy
    - `id` integer
    - `first_name` string
    - `last_name` string
    - `email` string, email
  - `editor` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaEditor
    - `id` integer
    - `first_name` string
    - `last_name` string
    - `email` string, email
  - `tags` ApiEvaluatorsEvaluatorIdPatchResponsesContentApplicationJsonSchemaTagsItems[]
    - `id` integer
    - `name` string
    - `color` string
  - `is_public` boolean — Whether this is a Respan-managed public evaluator.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized - Missing or invalid authentication
- `404` — Not Found

---

[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/revisions/4e064cf81dae/schema)
