curl --request PATCH \
--url https://api.arize.com/v2/evaluators/{evaluator_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Updated Evaluator Name",
"description": "Updated description"
}
'import requests
url = "https://api.arize.com/v2/evaluators/{evaluator_id}"
payload = {
"name": "Updated Evaluator Name",
"description": "Updated description"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Updated Evaluator Name', description: 'Updated description'})
};
fetch('https://api.arize.com/v2/evaluators/{evaluator_id}', 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/evaluators/{evaluator_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated Evaluator Name',
'description' => 'Updated description'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arize.com/v2/evaluators/{evaluator_id}"
payload := strings.NewReader("{\n \"name\": \"Updated Evaluator Name\",\n \"description\": \"Updated description\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.arize.com/v2/evaluators/{evaluator_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated Evaluator Name\",\n \"description\": \"Updated description\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/evaluators/{evaluator_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated Evaluator Name\",\n \"description\": \"Updated description\"\n}"
response = http.request(request)
puts response.read_body{
"id": "RXZhbHVhdG9yOjEyOmFCY0Q=",
"name": "Updated Evaluator Name",
"description": "Updated description",
"type": "TEMPLATE",
"space_id": "U3BhY2U6NDkzOkJaSkc=",
"created_at": "2026-02-16T22:05:47.900Z",
"updated_at": "2026-02-17T10:30:00.000Z",
"created_by_user_id": "VXNlcjoxOm5OYkM="
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"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": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 409,
"title": "Resource conflict",
"detail": "A resource with the given identifier already exists.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-conflict"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"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"
}Update evaluator
Update an evaluatorās metadata. At least one field must be provided. Omitted fields are left unchanged.
Payload Requirements
- At least one of
nameordescriptionmust be provided. name, if provided, must be unique within the space.- System-managed fields (
id,type,space_id,created_at,updated_at,created_by_user_id) cannot be modified.
Valid example
{
"name": "Hallucination Detector v2",
"description": "Updated evaluator for production hallucination checks"
}
Invalid example (no updatable fields provided)
{}
curl --request PATCH \
--url https://api.arize.com/v2/evaluators/{evaluator_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Updated Evaluator Name",
"description": "Updated description"
}
'import requests
url = "https://api.arize.com/v2/evaluators/{evaluator_id}"
payload = {
"name": "Updated Evaluator Name",
"description": "Updated description"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Updated Evaluator Name', description: 'Updated description'})
};
fetch('https://api.arize.com/v2/evaluators/{evaluator_id}', 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/evaluators/{evaluator_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated Evaluator Name',
'description' => 'Updated description'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arize.com/v2/evaluators/{evaluator_id}"
payload := strings.NewReader("{\n \"name\": \"Updated Evaluator Name\",\n \"description\": \"Updated description\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.arize.com/v2/evaluators/{evaluator_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated Evaluator Name\",\n \"description\": \"Updated description\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/evaluators/{evaluator_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated Evaluator Name\",\n \"description\": \"Updated description\"\n}"
response = http.request(request)
puts response.read_body{
"id": "RXZhbHVhdG9yOjEyOmFCY0Q=",
"name": "Updated Evaluator Name",
"description": "Updated description",
"type": "TEMPLATE",
"space_id": "U3BhY2U6NDkzOkJaSkc=",
"created_at": "2026-02-16T22:05:47.900Z",
"updated_at": "2026-02-17T10:30:00.000Z",
"created_by_user_id": "VXNlcjoxOm5OYkM="
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"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": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 409,
"title": "Resource conflict",
"detail": "A resource with the given identifier already exists.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-conflict"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"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
Path Parameters
The unique evaluator identifier (base64) A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Body
Body containing evaluator update parameters
Response
An evaluator object
An evaluator defines reusable evaluation logic that can be attached to evaluation tasks. The type field determines the kind of evaluation: TEMPLATE (LLM-based template evaluation), CODE (custom code evaluation), REMOTE (externally hosted evaluation), or DECISION_JUDGE (typed questions answered by a Decision Judge model).
The unique identifier for the evaluator
The name of the evaluator
The evaluator type:
TEMPLATEā LLM-based evaluator.CODEā managed built-in evaluators or custom Python code (both are subtypes ofCODE, discriminated by the nestedCodeConfig.type=MANAGED|CUSTOM).HARNESSā test harness evaluator.REMOTEā remote evaluator.DECISION_JUDGEā Decision Judge evaluator. It asks a set of typed questions about each span and writes one result per question. Requires Decision Judge to be enabled for the account.GET /v2/evaluatorsreturns these evaluators only whentype=DECISION_JUDGEis passed.
Applies to both the parent Evaluator.type field and every version's type
discriminator ā a version's type must always match its parent evaluator's type.
TEMPLATE, CODE, HARNESS, REMOTE, DECISION_JUDGE The unique identifier for the space the evaluator belongs to
When the evaluator was created
When the evaluator was last updated
The unique identifier for the user who created the evaluator
The description of the evaluator
Was this page helpful?