curl --request PUT \
--url https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rubrics": [
{
"title": "<string>",
"description": "<string>"
}
],
"build_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"selected_automation_revision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics"
payload = {
"rubrics": [
{
"title": "<string>",
"description": "<string>"
}
],
"build_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"selected_automation_revision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
rubrics: [{title: '<string>', description: '<string>'}],
build_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
selected_automation_revision_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics', 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.duvo.ai/v2/agents/{agentId}/eval-rubrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'rubrics' => [
[
'title' => '<string>',
'description' => '<string>'
]
],
'build_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'selected_automation_revision_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.duvo.ai/v2/agents/{agentId}/eval-rubrics"
payload := strings.NewReader("{\n \"rubrics\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"build_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"selected_automation_revision_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rubrics\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"build_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"selected_automation_revision_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rubrics\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"build_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"selected_automation_revision_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"rubrics": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"description": "<string>",
"sort_order": 123,
"deleted_at": "<string>"
}
],
"platform_rubrics": [
{
"key": "<string>",
"label": "<string>",
"description": "<string>",
"cause": "<string>"
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Replace Eval Rubrics
Replace a build’s entire Agent-specific evaluation rubric set in one call (at most 5 rubrics). Existing custom rubrics are removed and the supplied list becomes the new set; pass an empty array to clear them. Defaults to the Agent’s live build; pass build_id to target a specific revision.
curl --request PUT \
--url https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rubrics": [
{
"title": "<string>",
"description": "<string>"
}
],
"build_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"selected_automation_revision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics"
payload = {
"rubrics": [
{
"title": "<string>",
"description": "<string>"
}
],
"build_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"selected_automation_revision_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
rubrics: [{title: '<string>', description: '<string>'}],
build_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
selected_automation_revision_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics', 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.duvo.ai/v2/agents/{agentId}/eval-rubrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'rubrics' => [
[
'title' => '<string>',
'description' => '<string>'
]
],
'build_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'selected_automation_revision_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.duvo.ai/v2/agents/{agentId}/eval-rubrics"
payload := strings.NewReader("{\n \"rubrics\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"build_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"selected_automation_revision_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rubrics\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"build_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"selected_automation_revision_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/agents/{agentId}/eval-rubrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rubrics\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"build_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"selected_automation_revision_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"rubrics": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"description": "<string>",
"sort_order": 123,
"deleted_at": "<string>"
}
],
"platform_rubrics": [
{
"key": "<string>",
"label": "<string>",
"description": "<string>",
"cause": "<string>"
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication. Get your API key from the Duvo dashboard.
Path Parameters
The agent's unique identifier (Assignment ID)
Body
The complete custom rubric set for the build. Replaces every existing custom rubric; pass an empty array to clear them.
5Show child attributes
Show child attributes
Replace the custom rubrics on this build (revision). Defaults to the agent's live build when omitted.
The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision.
Was this page helpful?