---
title: "Create Eval Grader"
method: POST
path: "/console/v1/eval_graders"
tags: ["Evals"]
---

# Create Eval Grader

`POST /console/v1/eval_graders`

## Request

- Base URL: `https://statsigapi.net`
- URL: `https://statsigapi.net/console/v1/eval_graders`
- Auth: API key in header `STATSIG-API-KEY`

Create a grader in the project catalog. Attach it to a prompt with Update Prompt Eval Settings, or pass its name to Create Eval Run.

## Request body

- EvalGraderCreateDto
  - `name` string, required: Grader name, unique in the project.
  - `prompt` object, required
    - `type` 'label_model' | 'string_check' | 'text_similarity' | 'python', required: label_model is an LLM judge over {{output}} (content is the rubric); string_check compares {{output}} to a dataset column with operation; text_similarity scores {{output}} against a column with evaluation_metric; python runs source.
    - `content` string, nullable: Rubric for label_model. May reference {{output}} and dataset columns.
    - `operation` 'eq' | 'ne' | 'like' | 'ilike', nullable
    - `evaluation_metric` 'fuzzy_match' | 'bleu' | 'gleu' | 'meteor' | 'rouge_1' | 'rouge_2' | 'rouge_3' | 'rouge_4' | 'rouge_5' | 'rouge_l' | 'cosine', nullable: Similarity measure for text_similarity.
    - `column` string, nullable: Dataset column compared against for string_check and text_similarity.
    - `source` string, nullable: Python source for a python grader.
  - `evalModel` string: OpenAI model that judges a `label_model` grader, such as `gpt-5-mini`. Other grader types ignore it. An unsupported model returns a 400. Defaults to `gpt-5-mini` on create; omit it on update to keep the current model.

## Response `201`

Create Eval Grader

- object
  - `message` string, required: A simple string explaining the result of the operation.
  - `data` object, required: A single result.
    - `id` string, required
    - `name` string, required
    - `type` string, required: Grader type: label_model, string_check, text_similarity, python, completion_tokens, completion_latency, or logged_score.
    - `isGlobal` boolean, required
    - `prompt` union, required
      - object
        - `type` 'label_model', required
        - `content` string, required
      - object
        - `type` 'string_check', required
        - `operation` 'eq' | 'ne' | 'like' | 'ilike', required
        - `column` string, required
      - object
        - `type` 'text_similarity', required
        - `evaluation_metric` 'fuzzy_match' | 'bleu' | 'gleu' | 'meteor' | 'rouge_1' | 'rouge_2' | 'rouge_3' | 'rouge_4' | 'rouge_5' | 'rouge_l' | 'cosine', required
        - `column` string, required
      - object
        - `type` 'python', required
        - `source` string, required
      - object
        - `type` 'programmatic_grader', required
      - object
        - `type` 'completion_tokens', required
      - object
        - `type` 'completion_latency', required
      - object
        - `type` 'logged_score', required
    - `evalModel` string, required: OpenAI model that judges a `label_model` grader. Other grader types ignore it.
    - `choiceScores` object, nullable, required
    - `createdTime` number, double, required
    - `lastModifiedTime` number, double, required

## Other responses

- `400`: Invalid request. Please check the request input and try again.

## Changes

- **2026-10-29** `117facb1a58c`: 2 info
  - added the new optional request property `evalModel`
  - added the required property `allOf[subschema #2]/data/evalModel` to the response with the `201` status
- **2026-10-21** `df19329dc8c0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/statsig/apis/console-api/changes/console/v1/eval_graders/post.md)

---

[API](https://skmtc.dev/statsig/apis/console-api.md) - [All operations](https://skmtc.dev/statsig/apis/console-api/llms.txt) - [OpenAPI document](https://skmtc.dev/statsig/apis/console-api/revisions/605b784f2a7d?raw)
