---
title: "Create Evaluator"
method: POST
path: "/api/evaluators/"
tags: ["evaluators"]
---

# Create Evaluator

`POST /api/evaluators/`

POST handler with superadmin-only field protection.

Strips superadmin-only fields from non-superadmin requests before
delegating to OrganizationInjectionMixin.post() for org injection.

## Headers

- `Authorization` string, required

## Request body

- PublicEvaluatorCreateRequest — User-friendly serializer for creating evaluators via API. Accepts configurations as a simple dict of field values. Automatically infers evaluator type based on eval_class.
  - `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
  - `eval_class` string
  - `id` string
  - `version` integer
  - `is_read_only` boolean
  - `version_description` string
  - `evaluator_slug` string
  - `name` string, required
  - `unique_organization_id` string, nullable
  - `description` 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
  - `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
  - `organization` integer, nullable

## Response `201`

- PublicEvaluatorCreate — User-friendly serializer for creating evaluators via API. Accepts configurations as a simple dict of field values. Automatically infers evaluator type based on eval_class.
  - `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
  - `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
  - `created_by` integer, nullable, required
  - `updated_by` integer, nullable, 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)
