curl --request GET \
--url https://api.arize.com/v2/evaluator-templates \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arize.com/v2/evaluator-templates"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arize.com/v2/evaluator-templates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arize.com/v2/evaluator-templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.arize.com/v2/evaluator-templates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.arize.com/v2/evaluator-templates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/evaluator-templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"evaluator_templates": [
{
"column_name": "hallucination",
"display_name": "Hallucination",
"template": "You are evaluating whether an answer is factual given reference text.\n\n[Input]: {input}\n[Reference]: {context}\n[Answer]: {output}\n\nRespond with a single word: factual or hallucinated.",
"rails": [
"hallucinated",
"factual"
],
"classification_choices": {
"hallucinated": 1,
"factual": 0
},
"direction": "MINIMIZE",
"data_granularity": "SPAN"
},
{
"column_name": "session_frustration",
"display_name": "Session Frustration",
"template": "You are given a multi-turn session between a user and an AI assistant.\n\n{conversation}\n\nRespond with a single word: frustrated or ok.",
"rails": [
"frustrated",
"ok"
],
"classification_choices": {
"frustrated": 1,
"ok": 0
},
"direction": "MINIMIZE",
"data_granularity": "SESSION"
}
]
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}List 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:
{
"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.
curl --request GET \
--url https://api.arize.com/v2/evaluator-templates \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arize.com/v2/evaluator-templates"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arize.com/v2/evaluator-templates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arize.com/v2/evaluator-templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.arize.com/v2/evaluator-templates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.arize.com/v2/evaluator-templates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/evaluator-templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"evaluator_templates": [
{
"column_name": "hallucination",
"display_name": "Hallucination",
"template": "You are evaluating whether an answer is factual given reference text.\n\n[Input]: {input}\n[Reference]: {context}\n[Answer]: {output}\n\nRespond with a single word: factual or hallucinated.",
"rails": [
"hallucinated",
"factual"
],
"classification_choices": {
"hallucinated": 1,
"factual": 0
},
"direction": "MINIMIZE",
"data_granularity": "SPAN"
},
{
"column_name": "session_frustration",
"display_name": "Session Frustration",
"template": "You are given a multi-turn session between a user and an AI assistant.\n\n{conversation}\n\nRespond with a single word: frustrated or ok.",
"rails": [
"frustrated",
"ok"
],
"classification_choices": {
"frustrated": 1,
"ok": 0
},
"direction": "MINIMIZE",
"data_granularity": "SESSION"
}
]
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Authorizations
Most Arize AI endpoints require authentication. For those endpoints that require authentication, include your API key in the request header using the format
Response
The full list of built-in evaluator templates.
Every built-in template, ordered by category as the product presents them (response quality, code quality, trajectory, RAG, security, session).
Show child attributes
Show child attributes
Was this page helpful?