---
title: "List evaluator templates"
method: GET
path: "/v2/evaluator-templates"
tags: ["Evaluators"]
---

# List evaluator templates

`GET /v2/evaluator-templates`

Retrieve the built-in LLM-as-a-judge evaluator templates. This is the same
catalog the product offers when creating an evaluator, spanning response
quality, code quality, trajectory, RAG, security, and session evals.

Each template carries the judge prompt, the labels it returns, the score
for each label, its optimization direction, and the granularity it
evaluates at.

**Creating an evaluator from a template.** Pick a template, then call
`POST /v2/evaluators` with its fields mapped onto the request:

| Template field | Where it goes in `POST /v2/evaluators` |
| --- | --- |
| `column_name` | `version.template_config.name` |
| `template` | `version.template_config.template` |
| `classification_choices` | `version.template_config.classification_choices` |
| `direction` | `version.template_config.direction` |
| `data_granularity` | `version.template_config.data_granularity`. Send `SPAN`, or omit it, when the template's value is `null` |
| `display_name` | a label for your own use; reuse it for the evaluator's `name` or `description` |
| `rails` | no destination; `classification_choices` already carries the same labels |

Then add the fields a template doesn't carry: `space_id`, `name`, and
`type: TEMPLATE` on the evaluator; a `version.commit_message`; and the
execution settings `template_config.include_explanations`,
`use_function_calling_if_available`, and `llm_config`. Finally, create a
task to run the evaluator.

A complete request built from the `hallucination` template:

```json
{
  "space_id": "U3BhY2U6NDkzOkJaSkc=",
  "name": "hallucination",
  "description": "Built from the hallucination template",
  "type": "TEMPLATE",
  "version": {
    "commit_message": "Initial version from built-in template",
    "template_config": {
      "name": "hallucination",
      "template": "You are evaluating whether an answer is factual given reference text...\n{input}\n{output}",
      "classification_choices": { "hallucinated": 1, "factual": 0 },
      "direction": "MINIMIZE",
      "data_granularity": "SPAN",
      "include_explanations": true,
      "use_function_calling_if_available": true,
      "llm_config": {
        "ai_integration_id": "TGxtSW50ZWdyYXRpb246MTI6YUJjRA==",
        "model_name": "gpt-4o",
        "invocation_parameters": { "temperature": 0 },
        "provider_parameters": {}
      }
    }
  }
}
```

**Scope:** this returns only the built-in catalog, which is identical for
every caller and contains no space, account, or user data. It does not
include the evaluators that already exist in your space. List those with
`GET /v2/evaluators`.

**Pagination:** not paginated. The catalog is a small fixed list (28
templates, roughly 32 KB of JSON) and the full set is always returned, so
there is no `cursor` or `limit`.

<Warning>This endpoint is in alpha, read more [here](https://arize.com/docs/ax/rest-reference#api-version-stages).</Warning>

## Response `200`

The full list of built-in evaluator templates.

- ListEvaluatorTemplatesResponse
  - `evaluator_templates` EvaluatorTemplate[], required — Every built-in template, ordered by category as the product presents them (response quality, code quality, trajectory, RAG, security, session).
    - `column_name` string, required — Stable identifier for the template, and the eval column name it writes to by default (e.g. `hallucination`). Unique across all templates.
    - `display_name` string, required — Human-readable name shown in the product.
    - `template` string, required — The judge prompt. Variables are single-brace, f-string style (e.g. `{input}`, `{output}`, `{context}`) and are bound to real data by a task's column mappings when the evaluator runs. This is the only prompt you need. To have the judge explain its label, set `include_explanations` on `POST /v2/evaluators`. The explanation request is added at run time, not by editing this prompt.
    - `rails` string[], required — The labels the judge is allowed to return, in the order the product displays them.
    - `classification_choices` object, required — Maps each label to its numeric score. Pass this through unchanged when creating an evaluator, since the labels must match those named in the template.
    - `direction` 'MAXIMIZE' | 'MINIMIZE' | 'NONE', required — The direction for optimization. Defaults to `NONE` when omitted. - MAXIMIZE: higher scores are better - MINIMIZE: lower scores are better - NONE: higher or lower scores are neither better nor worse
    - `data_granularity` 'SPAN' | 'TRACE' | 'SESSION', required — Data granularity level for evaluation. - SPAN - Evaluate at the individual span level. - TRACE - Evaluate at the full trace level. - SESSION - Evaluate at the session level.

## Other responses

- `401` — Authentication is required
- `403` — Insufficient permissions to access this resource
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/arize-ai/apis/arize-rest-api.md) · [All operations](https://skmtc.net/arize-ai/apis/arize-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/arize-ai/arize-rest-api/revisions/8ff78ca601af/schema)
